Java面试题更新 2026-08-05

请说明 Java 语言中 final、finally 和 finalize 三者的不同用途和适用场景。

技术原理Java

考察说明

考查对 Java 基础语法中易混淆关键字的掌握程度。

回答思路

  1. 【回答框架 1】final 是一个修饰关键字,可用于修饰类、方法和变量。修饰类时表示该类不可被继承;修饰方法时表示该方法不能被子类重写;修饰变量时表示该变量只能赋值一次。
  2. 【回答框架 2】finally 是异常处理机制的一部分,用于定义 try-catch 块中的释放资源代码块,无论是否发生异常都会执行,常用于关闭流或数据库连接。
  3. 【回答框架 3】finalize 是 Object 类的方法,在对象被垃圾回收前调用,允许对象进行清理操作,但其执行时机不确定且已不推荐使用,Java 9 起已被标记为 deprecated。
  4. 【关键点 1】final 侧重不可变性约束。
  5. 【关键点 2】finally 保证异常处理中的清理逻辑一定执行。
  6. 【关键点 3】finalize 依赖于垃圾回收,不保证及时执行。
  7. 【易错点 1】不要把 finalize 作为资源释放的主要手段。
  8. 【易错点 2】finally 中若抛出异常会覆盖原异常。
  9. 【易错点 3】final 修饰的引用类型变量并不代表对象内容不可变。