Java面试2:final、finally、finalize 的区别?

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 是垃圾回收前的钩子方法,不保证及时执行。
相关推荐
十七号程序猿2 小时前
Java图书管理系统 | 无需配置任何环境,双击一键启动,开箱即用
java·spring boot·vue·毕业设计·毕设·源代码管理
ZHOUPUYU2 小时前
PHP与WebSocket实时通信的原理到生产级应用
开发语言·html·php
umeelove352 小时前
Spring boot整合quartz方法
java·前端·spring boot
码云数智-大飞2 小时前
生死时速:高并发秒杀系统的架构设计与防超卖实战
开发语言
DREW_Smile2 小时前
数据在内存中的存储
c语言·开发语言
吴声子夜歌2 小时前
JavaScript——对象
开发语言·javascript·ecmascript
yige452 小时前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端
比昨天多敲两行3 小时前
C++ 继承
开发语言·c++·面试
不会写DN3 小时前
Js常用的字符串处理
开发语言·前端·javascript