java中final、finally、finalize,三者之间的什么区别

文章介绍了Java中的final关键字用于修饰不可变的类、方法和变量,finally关键字确保代码块在任何情况下都会执行,通常用于清理操作,而finalize方法在对象被垃圾回收前执行,用于资源释放。但不应过分依赖finalize,应优先使用try-finally或try-with-resources语句。
摘要由CSDN通过智能技术生成

在Java中,final、finally和finalize是三个不同的概念,具有不同的用途和含义:

final关键字:
final关键字可以用于修饰类、方法和变量。
修饰类时,表示该类是最终类,不能被继承。
修饰方法时,表示该方法是最终方法,不能被子类重写。
修饰变量时,表示该变量是一个常量,一旦赋值后就不能再修改。
示例代码1:使用final修饰变量

public class Example {
public static void main(String[] args) {
final int num = 10; // 使用final修饰变量
// num = 20; // 编译错误,无法修改final变量的值
System.out.println(num); // 输出结果为10
}
}
finally关键字:
finally关键字用于定义在try-catch语句中的一个代码块。
无论是否发生异常,finally块中的代码都会被执行。
finally块通常用于执行一些必要的清理操作,例如关闭资源。
示例代码2:使用finally关键字

public class Example {
    public static void main(String[] args) {
        try {
            int result = 10 / 0; // 会抛出异常
        } catch (ArithmeticException e) {
            System.out.println("发生了算术异常");
        } finally {
            System.out.println("无论是否���生异常,都会执行这里的代码");
        }
    }
}

finalize()方法:
finalize()方法是Java中的一个特殊方法,用于在对象被垃圾回收之前进行清理操作。
finalize()方法在对象被垃圾回收器调用时自动执行。
通过重写finalize()方法,可以在对象被回收之前释放资源或执行其他清理操作。
示例代码3:使用finalize()方法

public class Example {
@Override
protected void finalize() throws Throwable {
// 执行对象的清理操作
System.out.println(“对象被垃圾回收前执行finalize()方法”);
super.finalize();
}

public static void main(String[] args) {
    Example example = new Example();
    example = null; // 将对象置为null,使其成为垃圾
    System.gc(); // 手动触发垃圾回收
}

}
需要注意的是,虽然可以通过手动触发垃圾回收来调用finalize()方法,但是垃圾回收的具体执行时间是不确定的,无法精确控制。因此,不建议过度依赖finalize()方法来进行资源释放,而应该使用显式的资源释放方式(如try-finally块或try-with-resources语句)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值