final

final关键字可以用来修饰类,方法以及成员变量,当用在不同的场景下时具有不同的意义。

修饰类

如果修饰类,则代表这个类不可继承

修饰方法

如果修饰方法,则代表这个方法不可覆写;同时,允许编译器将所有对这个方法的调用转化为inline调用,也就是说,把所有的调用处的方法名全部换为方法主体,这也会使得代码主体变得异常庞大,非常影响性能。

修饰变量

如果修饰基本类型,则代表该变量的值不可改变。

如果修饰引用类型,则代表该对象的引用不可改变。

finally

finally是用于异常处理时使用的语句,由finally关键词修饰的代码主体,无论异常是否发生,该代码块总会执行。

注意:哪怕try/catch中存在return,finally修饰的代码块依然会执行。

具体情况可以如下:

finally中包含return语句,则无论之前try语句中是否包含retrun,都不再执行,只执行finally中的return。

finally中不包含return语句,也没有改变try中的返回值,则finally中的语句执行完后会继续执行try中的return。

finally中不包含return语句,但是改变了try中的返回值,则finally中的语句执行完后会继续执行try中的return,并通过return继续返回值(此处类似函数调用,如果finally改变的返回值是基本类型,则改变不起作用;如果是引用类型,则finally中对该引用类型的属性值的改变起作用)。

finalize

finalize是一个方法名,它是在 Object 类中定义的,因此所有的类都继承了它。当需要从堆中永久删除某个对象之前,垃圾回收器会主动调用该对象的finalize()方法。

需要注意的是:

程序猿无法确定垃圾回收器何时调用该方法(哪怕你明着写出来,依然无法确定,所以一般程序猿不需要调用该方法)

无法保证调用不同对象的方法的顺序。换句话说如果对象A里面引用了对象B,则有可能先调用A的finalize()方法,也有可能先调用B的finalize()方法。

最新文章

  1. android 两种实现计时器时分秒的实现,把时间放在你的手中~
  2. 20140701立项 移植WatermarkLabelSys
  3. 合并 hdfs 文件
  4. Oracle- UPDATE FROM讲解
  5. MongoDB实战开发 【零基础学习,附完整Asp.net示例】
  6. android中更改spinner、AutoCompleteTextView切割线的颜色
  7. SqlServer发送邮件,定时作业
  8. 使用Windows2003创建AD服务器 - 进阶者系列 - 学习者系列文章
  9. Angular4 后台管理系统搭建(1) - 建立一个通用的Wijmo5 flexgrid分页器组件
  10. Mac OS启动服务优化高级篇
  11. js实现内容点击复制
  12. Ubuntu 16下安装64位谷歌Chrome浏览器
  13. C#处理json实战
  14. mysql语句将日期转换为时间戳的方法
  15. WCF三种通信方式
  16. C# Parallel.Invoke 实现
  17. Ajax进阶之原生js与跨域jsonp
  18. 平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)
  19. 查看SQL SERVER数据库的连接数
  20. grep和sed匹配多个字符关键字的用法

热门文章

  1. oracle 函数 输入值,查询数据,返回相应处理结果
  2. animate.css做点赞效果
  3. 基于Spring aop写的一个简单的耗时监控
  4. Visual Studio编辑器“智能提示(IntelliSense)”异常的解决方案
  5. java集合 线程安全
  6. Web 呼起 APP
  7. PHP下载远程图片的3个方法
  8. springboot-custom starter
  9. Java8学习笔记(十一)--并发与非并发流下reduce比较
  10. npm太慢, 修改npm镜像