1、final
final
修饰的类,不能被继承。final
修饰的变量,不能被修改。final
修饰的方法,不能被重写。final
不是immutable
,对象的属性还是可以改变的。
2、finally
finally
是 Java 保证代码一定会被执行的机制,可以使用 try-catch-finally、try-finally 来关闭数据库连接,unlock()
等。- 如果是利用
finally
机制来关闭资源,最好是用 try-with-resources。
特例
|
|
上面的 finally
语句不会被执行。
3、finalize
finalize
方法是Object
中一个方法,它的设计目的是保证对象在垃圾收集前完成资源的回收,现在已经不推荐使用,在 Java 9 中已被标记为@Deprecated
。- 使用
finalize
可能会使程序性能降低,因为 JVM 会做额外处理。 - Java 目前使用
Cleaner
来替换finalize
,Cleaner
的实现利用了幻象引用(虚引用)和引用队列,比如mysql-connector-java
就是利用幻象引用来回收资源。