【Java基础面试题:final,finally,finalize的区别?】

final, finally, finalize 的区别

  1. final
    1.1 修饰类
    \quad 表示类不可被继承
    \quad 示例:final class String

    1.2 修饰方法
    \quad 表示方法不可被子类重写
    \quad 示例:

    public final void show() { ... }
    

    1.3 修饰变量
    \quad 基本类型变量值不可变,引用类型变量地址不可变
    \quad 示例:

    final int MAX = 100;
    final List<String> list = new ArrayList<>(); // 可修改list内容,不可重新赋值
    
  2. finally
    与异常处理配合使用,保证代码必定执行:
    \quad • 无论是否发生异常
    \quad • 即使try/catch中有return语句
    \quad 典型应用:

    try {
        // 打开文件
    } catch (IOException e) {
        // 处理异常
    } finally {
        // 必定关闭文件
    }
    
  3. finalize
    Object类定义的方法,对象被回收前执行:
    \quad • 执行时机由JVM决定
    \quad • Java 9起被标记为过时方法
    \quad 替代方案:使用AutoCloseable接口
    \quad 示例:

    protected void finalize() throws Throwable {
        // 资源清理(不推荐)
    }
    

关键差异总结

特性作用域执行确定性典型用途
final编译时约束绝对定义不可变结构
finally运行时保证确定资源清理
finalize对象生命周期不确定遗留资源回收(已过时)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值