final关键字详解与final,finally,finalize的区别
2023-12-13 06:34:38
final关键字详解与final,finally,finalize的区别
1. final关键字
1. 修饰变量
如果一个变量被声明为 final,那么它的值就不能被修改。例如:
final int a = 10; // 定义常量a,其值不能被修改
在上面的例子中,变量 a 被声明为 final,其值不能被改变。
2. 修饰方法
如果一个方法被声明为 final,那么它不能被子类重写(override)。例如:
public class Parent {
public final void foo() {
System.out.println("Parent foo");
}
}
public class Child extends Parent {
// 编译错误,无法重写final方法
public void foo() {
System.out.println("Child foo");
}
}
在上面的例子中,Parent 类中的 foo() 方法被声明为 final,所以在 Child 类中无法重写该方法。
3. 修饰类
如果一个类被声明为 final,那么它不能被继承。例如:
public final class MyClass {
// ...
}
// 编译错误,无法继承final类
public class MySubClass extends MyClass {
// ...
}
在上面的例子中,MyClass 类被声明为 final,所以无法被其他类继承。
4. final的作用
使用 final 可以保证变量、方法和类的不可变性,从而增加程序的可读性和可维护性。此外,它还可以提高程序的性能,因为编译器可以对 final 变量进行优化。
需要注意的是,虽然 final 变量的值不能被修改,但是它所引用的对象的状态是可以被修改的。也就是说,如果一个 final 变量引用了一个可变对象,那么这个对象的状态是可以被修改的,只是变量本身不能再引用其他对象。例如:
final List<String> list = new ArrayList<>();
list.add("hello"); // 可以修改list所引用的ArrayList对象的状态
list = new ArrayList<>(); // 编译错误,不能将list引用另一个ArrayList对象
总的来说,使用 final 关键字可以使代码更加清晰、易读和可维护。在编写Java程序时,应该根据具体情况来考虑是否使用 final 关键字。
2. final,finally,finalize的区别
1. final
- final 是一个关键字,可用于变量、方法和类。
- 当应用于变量时,final 表示该变量的数值在初始化后不能被修改,即成为常量。
- 当应用于方法时,final 表示该方法不能被子类重写。
- 当应用于类时,final 表示该类不能被继承。
2. finally
- finally 是与异常处理相关的关键字,在异常处理结构(try-catch-finally)中使用。
- 无论是否发生异常,finally 中的代码块都会被执行,通常用于释放资源或执行清理操作。
3. finalize
- finalize 是一个方法,属于 Java 中的 Object 类。
- 在早期的 Java 版本中,程序员可以覆盖 finalize 方法来定义对象在被垃圾回收前的清理行为。
- 从 Java 9 开始,finalize 方法已被标记为过时,不再建议使用,因为它的执行时机不确定且存在性能问题。
关于finalize更详细的介绍可以看这篇博文:java中object的常用方法
4. 总结
- final 用于定义常量、禁止重写或继承,是一种修饰符。
- finally 用于异常处理,确保代码块中的内容得到执行,无论是否有异常抛出。
- finalize 是一个方法,用于对象在被垃圾回收前的清理,但不再推荐使用。
文章来源:https://blog.csdn.net/weixin_53066120/article/details/134803845
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!