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

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

final

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

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

final List a = new ArrayList();
//向 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 的一个方法,他的设计目的是保证对象在被垃圾收集前完成特定资源的回收。但是不建议使用。

你可能感兴趣的:(Java 核心36讲(第3讲)谈谈 final、finally、finalize 有什么不同?)