final、finally、finalize 的区别
final 是 Java 中的一个关键字,用于修饰类、方法和变量。
- 修饰类时,表示该类不能被继承。
- 修饰方法时,表示该方法不能被子类重写。
- 修饰变量时,表示该变量为常量,一旦赋值后不可更改。
finally 是 Java 中异常处理的一部分,用于定义在 try-catch 块后必须执行的代码块。
- 无论是否发生异常,finally 块中的代码都会执行。
- 常用于资源释放,如关闭文件或数据库连接。
finalize 是 Object 类中的一个方法,用于垃圾回收前的清理工作。
- 当对象被垃圾回收器回收时,finalize() 方法会被调用。
- 不推荐依赖 finalize() 进行资源释放,因为其执行时间不确定。
示例代码
// final 示例
final class FinalClass {} // 不能被继承
final int CONSTANT = 100; // 常量
// finally 示例
try {
// 可能抛出异常的代码
} catch (Exception e) {
// 异常处理
} finally {
// 必须执行的代码
}
// finalize 示例
@Override
protected void finalize() throws Throwable {
// 对象回收前的清理
super.finalize();
}
关键区别总结
- final 是修饰符,用于类、方法或变量的不可变性。
- finally 是异常处理机制的一部分,确保代码块一定执行。
- finalize 是垃圾回收前的钩子方法,不保证及时执行。