1、final

  • final 修饰的类,不能被继承。
  • final 修饰的变量,不能被修改。
  • final 修饰的方法,不能被重写。
  • final 不是 immutable,对象的属性还是可以改变的。

2、finally

  • finally 是 Java 保证代码一定会被执行的机制,可以使用 try-catch-finally、try-finally 来关闭数据库连接,unlock()等。
  • 如果是利用 finally 机制来关闭资源,最好是用 try-with-resources。

特例

1
2
3
4
5
6
try {
    // do something 
    Sysem.exit(1);
} finally{
    Sysem.out.println(Print from fnally);
}

上面的 finally 语句不会被执行。

3、finalize

  • finalize 方法是 Object 中一个方法,它的设计目的是保证对象在垃圾收集前完成资源的回收,现在已经不推荐使用,在 Java 9 中已被标记为 @Deprecated
  • 使用 finalize 可能会使程序性能降低,因为 JVM 会做额外处理。
  • Java 目前使用 Cleaner 来替换 finalizeCleaner的实现利用了幻象引用(虚引用)和引用队列,比如 mysql-connector-java 就是利用幻象引用来回收资源。
0%