典型回答
final: 可以用来修饰类、方法、变量。final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。
finally: 是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接等操作等。
finalize: 是基础类 java.lang.Object 的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。finalize 机制现在已经不推荐使用,并且在 JDK 9 开始被标记为 deprecated。
知识扩展与思考
final:
当在类中定义变量时,若在其前面加上 final 关键字,那就是说,这个变量一旦被初始化,便是不可改变的。
例如:
final int a = 8;
a=9 //报错
final List strList = new ArrayList<>();
strList.add("Hello");// 不会报错
strList = new ArrayList<>(); //报错
这里的不可改变的意思对基本数据类型(如a的值)来说是其值不可变,而对于对象变量(如引用 strList )来说是指引用不可变,并不是对象本身不能变。
finally:
Java 保证重点代码一定要被执行的机制,除非在finally前执行了 System.exit(0)、try中死循环、线程被杀死。
考点分析
final、finally、finalize之间其实没有任何关系,主要是因为他们长得很像而已。主要考察应聘者分别对他们的使用和理解。
这几个知识点考察较少,不用掌握太深入,只需要简单了解既可。但是一旦面试被问到,一点都答不上来那就比较减分了。
`
`文章每周持续更新,微信搜索「 Java面试公开课 」,一线大厂面试资料免费分享!资料不在于多,在于精!