这三个虽然没有联系,但是不排除某些面试官或问到,还是集合整理一下吧。
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 的一个方法,他的设计目的是保证对象在被垃圾收集前完成特定资源的回收。但是不建议使用。