Java 面试题
目录

Java 中 final, finally, 和 finalize 的区别是什么?

· 约 2 分钟读完 · 第 8 / 274 章

推荐答案

  • final:用于修饰类、方法和变量。修饰类时,表示该类不能被继承;修饰方法时,表示该方法不能被子类重写;修饰变量时,表示该变量一旦被赋值后不能被修改。
  • finally:是异常处理机制的一部分,通常与 try-catch 块一起使用。无论是否发生异常,finally 块中的代码都会被执行,常用于释放资源。
  • finalize:是 Object 类中的一个方法,用于在垃圾回收器回收对象之前执行一些清理操作。开发者可以重写该方法,但不推荐依赖它进行资源释放。

本题详细解读

final

  • 修饰类:当一个类被声明为 final 时,它不能被其他类继承。例如:

    任何尝试继承 MyClass 的类都会导致编译错误。

  • 修饰方法:当一个方法被声明为 final 时,它不能被子类重写。例如:

    子类不能重写 myMethod 方法。

  • 修饰变量:当一个变量被声明为 final 时,它只能被赋值一次,之后不能再修改。例如:

finally

finally 块通常用于确保某些代码无论是否发生异常都会被执行。例如:

finally 块常用于释放资源,如关闭文件、数据库连接等。

finalize

finalize 是 Object 类中的一个方法,用于在垃圾回收器回收对象之前执行一些清理操作。例如:

需要注意的是,finalize 方法的执行时机不确定,且不推荐依赖它进行资源释放,因为垃圾回收器的行为是不可预测的。