final、finally、finalize 的区别

35
0
0
2020-01-13
final、finally、finalize 的区别

finalfinallyfinalize 的区别

final、finally、finalize 的区别finalfinallyfinalize 是 Java 中三个不同概念和用途的关键字。

final

  • final 是一个关键字,可以用于修饰类、方法、变量。

  • 当用于类时,表示该类不能被继承,即为最终类。

  • 当用于方法时,表示该方法不能被子类重写。

  • 当用于变量时,表示该变量是一个常量,只能被赋值一次。

final class FinalClass {
    // ...
}

class Example {
    final int constantValue = 10;

    final void finalMethod() {
        // ...
    }
}

finally

  • finally 是一个关键字,用于在异常处理中的 try-catch-finally 结构中执行一段代码块,不论是否发生异常,该代码块都会被执行。

  • finally 通常用于确保资源的释放,比如关闭文件、网络连接等。

try {
    // 一些可能抛出异常的代码
} catch (Exception e) {
    // 异常处理
} finally {
    // 无论是否发生异常,都会执行的代码块
    // 通常用于资源释放
}

  1. finalize

    • finalize 是一个方法,用于在对象被垃圾回收之前执行一些清理操作。

    • 在 Java 中,垃圾回收器会负责自动回收不再被引用的对象,而 finalize 方法会在对象被回收之前调用,允许对象执行一些清理工作。

    • 但是,finalize 的使用已经不推荐,因为它的执行时机不确定,不能保证及时执行,而且可能会影响性能。现代 Java 程序更倾向于使用其他资源管理方式,如 try-with-resources 语句。

    class ExampleWithFinalize {
        // ...
    
        @Override
        protected void finalize() throws Throwable {
            // 在对象被垃圾回收之前执行的清理操作
            // 不推荐使用 finalize,而是使用其他资源管理方式
            // ...
            super.finalize();
        }
    }
    

总结:

  • final 用于表示最终性,可以修饰类、方法、变量。

  • finally 用于定义在异常处理结构中一定会执行的代码块。

  • finalize 是一个方法,用于在对象被垃圾回收之前执行清理操作,但已经不推荐使用。