hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶
final关键字有什么作用?
在 Java 中,final
关键字有多个用途,它可以用于类、方法和变量。根据使用的上下文,final
的含义和作用略有不同。以下是 final
关键字的不同用途及其作用:
1. 用于变量
-
最终变量(Final Variables):
- 如果一个变量被声明为
final
,则该变量只能被赋值一次。一旦赋值后,不能再改变其值。
javafinal int x = 10; // x = 20; // 编译错误,不能修改最终变量
- 如果一个变量被声明为
-
引用类型:
- 对于引用类型的
final
变量,虽然变量本身不能再指向另一个对象,但可以修改对象的内部状态(即对象的属性)。
javafinal List<String> list = new ArrayList<>(); list.add("Hello"); // 允许,修改对象的状态 // list = new ArrayList<>(); // 编译错误,不能重新赋值
- 对于引用类型的
2. 用于方法
-
最终方法(Final Methods):
- 如果一个方法被声明为
final
,则该方法不能被子类重写。这可以防止修改父类的方法实现,确保方法逻辑的稳定性。
javaclass Parent { final void show() { System.out.println("Final method in Parent class."); } } class Child extends Parent { // void show() { // 编译错误,无法重写父类的 final 方法 // System.out.println("Trying to override."); // } }
- 如果一个方法被声明为
3. 用于类
-
最终类(Final Classes):
- 如果一个类被声明为
final
,则该类不能被继承。换句话说,无法创建该类的子类。这通常用于设计不希望被修改的类,比如String
类。
javafinal class FinalClass { // 类的内部实现 } // class ExtendedClass extends FinalClass { // 编译错误,FinalClass 不能被继承 // }
- 如果一个类被声明为
4. 用于提高性能
- 使用
final
声明变量、方法或类时,编译器和 JVM 可以进行某些优化,因为它们知道该实体不会改变或被重写,从而可能提高性能。
5. 保持不可变性
- 标记变量为
final
是确保数据不可变的一种机制,特别是在多线程编程中,可以防止对共享数据的意外修改。
总的来说
final
关键字在 Java 中用于限制变量、方法和类的行为。它可以帮助提高代码的可维护性、安全性和性能。理解 final
的用途能够帮助本牛马baby编写更健壮和可预测的代码。
final、finally、finalize 的区别?
final
、finally
和 finalize
是 Java 中的三个不同关键字或方法,它们在功能和用途上有显著的区别:
1. final
-
定义 :
final
是一个关键字,用于声明一个变量、方法或类为最终的,意味着它不能被修改或重写。 -
用途:
-
最终变量 :声明的变量只能赋值一次。
javafinal int x = 10;
-
最终方法 :声明的方法不能被子类重写。
javafinal void myMethod() { /* ... */ }
-
最终类 :声明的类不能被继承。
javafinal class MyClass { /* ... */ }
-
2. finally
-
定义 :
finally
是一个关键字,用于异常处理,它用于定义一个代码块,该代码块无论是否发生异常都将被执行。 -
用途:
-
通常与
try
和catch
一起使用,finally
块用于执行关闭资源或清理工作等必要操作。javatry { // 可能抛出异常的代码 } catch (Exception e) { // 处理异常 } finally { // 无论是否发生异常,都会执行的代码 }
-
3. finalize
-
定义 :
finalize
是一个方法,属于Object
类,可能会在垃圾回收前被调用。 -
用途:
finalize()
方法由垃圾回收器在对象被回收之前调用,以允许对象进行清理操作(如释放资源)。- 由于
finalize()
的使用具有不确定性,现在推荐使用try-with-resources
或其他资源管理方式,而不是依赖于finalize()
。
javaprotected void finalize() throws Throwable { try { // 清理资源的代码 } finally { super.finalize(); // 保证父类的 finalize 也被调用 } }
总的来说
final
:用于声明不允许修改或继承的变量、方法或类。finally
:用于异常处理相关代码块,确保特定代码会执行。finalize
:是一个方法在对象即将被垃圾回收时调用,用于清理资源,但其使用不再推荐。
面试官:直接调用System.gc()会立即执行GC吗?
答:不会
IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD
12306回家科技
https://pan.quark.cn/s/45f6bf9be1b3