小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
问题
final、finally、 finalize 有什么不同?
答案
final、finally、 finalize 的区别就是 Java 和 JavaScript 的区别,就是老婆和老婆饼的区别,就是雷锋和雷峰塔的区别。
总结一下,就是一点关系都没有。
final 可以用来修饰类、方法、变量,分别有不同的意义。
-
final修饰class代表该类不可以被继承扩展。 -
final修饰 变量 代表该变量不可以被修改。 -
final修饰 方法 代表该方法不可以被重写(override)。
finally 则是 Java 保证重要代码一定被执行的一种机制。比如我们用 try-finally 或者是 try-catch-finally 来进行类似关闭 JDBC 连接、关闭文件、保证 unlock 锁等操作。
finalize 是基础类 java.lang.Object 的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。finalize 机制现在已经不推荐使用,并且在 JDK 9 开始被标记为 deprecated。
finalize 弃用原因
finalize 这个从 JDK 1 就存在的方法,为什么会被弃用呢?是因为对 Java 虚拟机的垃圾回收有影响。
原因是
这是一个非常经典的 Java 基础问题,我上面的回答主要是从语法和使用实践角度出发的,其实还有很多方面可以深入探讨,面试官还可以考察你对性能、并发、对象生命周期或垃圾收集基本过程等方面的理解。推荐使用 final 关键字来明确表示我们代码的语义、逻辑意图,这已经被证明在很多场景下是非常好的实践,比如: