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就是利用幻象引用来回收资源。