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 是垃圾回收前的钩子方法,不保证及时执行。
相关推荐
Wonderful U1 分钟前
基于Python+Django的在线题库与智能阅卷系统:从痛点分析到完整实现
开发语言·python·django
码语智行1 分钟前
拦截器、接口限流、过滤器、防重发/幂等性功能说明
开发语言·网络·python
liulilittle5 分钟前
麻将牌堆渲染(Lua)
开发语言·lua
鱼鳞_7 分钟前
苍穹外卖-Day10(Spring task)
java·后端·spring
雨落在了我的手上15 分钟前
初始java(十七):常⽤⼯具类介绍
java·开发语言
凤凰院凶涛QAQ26 分钟前
《Java版数据结构 & 集合类剖析》集合框架的封装设计与顺序表:“从 Iterable 到 ArrayList:集合框架的‘职业树“
java·开发语言·数据结构
孟华苏40 分钟前
怎么快速排查内存泄漏问题
java·开发语言·python
zz345729811341 分钟前
C语言中字符串常量存储位置
c语言·开发语言·算法·青少年编程
noipp42 分钟前
推荐题目:洛谷 P16510 [GKS 2015 #C] gRanks
java·c语言·开发语言·c++·python·算法
flyinmind43 分钟前
Java环境与Android环境中使用QuickJS
java·开发语言·javascript·quickjs