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 是垃圾回收前的钩子方法,不保证及时执行。
相关推荐
一灯架构4 小时前
90%的人答错!一文带你彻底搞懂ArrayList
java·后端
踏着七彩祥云的小丑4 小时前
pytest——Mark标记
开发语言·python·pytest
Dream of maid5 小时前
Python12(网络编程)
开发语言·网络·php
W23035765735 小时前
经典算法:最长上升子序列(LIS)深度解析 C++ 实现
开发语言·c++·算法
Y4090015 小时前
【多线程】线程安全(1)
java·开发语言·jvm
不爱吃炸鸡柳6 小时前
Python入门第一课:零基础认识Python + 环境搭建 + 基础语法精讲
开发语言·python
布局呆星6 小时前
SpringBoot 基础入门
java·spring boot·spring
minji...6 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
Dxy12393102166 小时前
Python基于BERT的上下文纠错详解
开发语言·python·bert
风吹迎面入袖凉6 小时前
【Redis】Redisson的可重入锁原理
java·redis