原创

Java关键字大揭秘:final、finally、finalize的区别与用法

final、finally、finalize 在Java中的区别

在Java中,finalfinally 和 finalize 是三个不同的关键字,分别用于表示最终的、不可改变的特性、异常处理的一部分,以及对象的回收时的清理工作。以下是它们的区别:

1. final - 最终的、不可改变的

1.1 功能

final用于修饰类、方法和变量,表示最终的、不可改变的特性。对于变量,final要求在声明时给定初值,并且只能读取,不可修改。对于方法,final表示该方法不能被重写,但可以被重载。对于类,final表示该类不能被继承。

1.2 示例代码

public class FinalExample {    final int constantVar = 10;
final void finalMethod() { // 方法体 }}
final class FinalClass { // 类体}

2. finally - 异常处理的一部分

2.1 功能

finally是异常处理的一部分,用在 try/catch 语句中。finally块中的代码始终会在 try 或 catch 块中的代码执行完毕后执行,无论是否发生异常。finally块通常用于确保资源的释放或清理工作。

2.2 示例代码

public  class  FinallyExample {    public   void divide(int a, int b) {        try {            int result = a / b;            System.out.println("Result: " + result);        } catch (ArithmeticException e) {            System.err.println("Error: " + e.getMessage());        } finally {            System.out.println("Finally block, always executed.");        }    }}

3. finalize() - 对象回收时的清理工作

3.1 功能

finalize()是在   java.lang.Object 中定义的方法,用于对象回收时的清理工作。当垃圾收集器将对象从内存中清除出去之前,会调用对象的   finalize() 方法。finalize()方法在一般情况下由JVM自动调用,也可以手动调用。如果需要重写   finalize() 方法,应该在方法内调用   super.finalize() 以确保释放所有资源。

3.2 示例代码

public  class  FinalizeExample {    @Override    protected  void finalize() throws  Throwable {        // 清理工作        super.finalize();    }}

4. 总结

final表示最终的、不可改变的特性,可用于变量、方法和类。finally用于异常处理,确保代码块中的代码无论是否发生异常都会被执行。finalize()是对象回收时的清理工作,一般由JVM自动调用,也可以手动调用。


备注: 关注站长获取更多详情。

file
file

正文到此结束
本文目录