Java关键字大揭秘:final、finally、finalize的区别与用法
final、finally、finalize 在Java中的区别
在Java中,final
、finally
和 finalize
是三个不同的关键字,分别用于表示最终的、不可改变的特性、异常处理的一部分,以及对象的回收时的清理工作。以下是它们的区别:
1. final - 最终的、不可改变的
1.1 功能
•final
用于修饰类、方法和变量,表示最终的、不可改变的特性。•对于变量,final
要求在声明时给定初值,并且只能读取,不可修改。•对于方法,final
表示该方法不能被重写,但可以被重载。•对于类,final
表示该类不能被继承。
1.2 示例代码
public class FinalExample {
final int constantVar = 10;
final void finalMethod() {
// 方法体
}
}
final class FinalClass {
// 类体
}
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.");
}
}
}
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();
}
}
public class FinalizeExample {
@Override
protected void finalize() throws Throwable {
// 清理工作
super.finalize();
}
}
4. 总结
•final
表示最终的、不可改变的特性,可用于变量、方法和类。•finally
用于异常处理,确保代码块中的代码无论是否发生异常都会被执行。•finalize()
是对象回收时的清理工作,一般由JVM自动调用,也可以手动调用。
备注: 关注站长获取更多详情。
- 本文标签: Java 面试题
- 本文链接: https://www.jietongc.com/article/366
- 版权声明: 本文由大熊科技原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权