Java 核心36讲(第3讲)谈谈 final、finally、finalize 有什么不同?

这三个虽然没有联系,但是不排除某些面试官或问到,还是集合整理一下吧。

final

修饰类:不能被继承。
修饰方法:不能被重写。
修饰变量:不能修改。

final 修饰引用时,只是限制这个引用所指向的对象的位置,并不能限制这个位置中的内容发生改变。
例:

final List<Integer> a = new ArrayList<Integer>();
//向 a 中添加元素是可以的
a.add(1);

JDK9 中新添的 List.of() 方法创建的集合是不可变 List。

finally

保证重点代码一定要被执行。但仍有一些状况 fianlly 中的代码不能执行,如下。
(1)

try{
 System.exit(1);
}finally{
 System.out.printly("Print from fianlly");
}

(2)无限循环

try{
  while(true){
      System.out.print("abc");
  }
}finally{
 System.out.println("abc");
}

(3)线程被杀死
当执行 try,finally 的线程被杀死时,finally 也无法执行。

finalize

finalize 是基础类 java.lang.Object 的一个方法,他的设计目的是保证对象在被垃圾收集前完成特定资源的回收。但是不建议使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。