📅  最后修改于: 2023-12-03 14:42:14.121000             🧑  作者: Mango
在 Java 中,final
是一个关键字,用于表示“最终”的含义。在不同的上下文中,final
的具体含义略有不同。本文将介绍 final
在 Java 中不同用法及其作用。
使用 final
修饰的变量表示是一个常量,其值不能被修改。一旦被初始化,其值将无法再次被改变。
final int a = 10;
a = 20; // 编译错误,a 的值无法改变
对于 final
变量,Java 编译器会对其进行优化,通常会在编译时直接使用该变量的值,而不是在运行时再获取其值。因此,使用 final
变量可以极大地提高程序的运行效率。例如:
// 不使用 final 变量,代码相当冗长
for (int i = 0; i < 1000000; i++) {
doSomething(i, 10);
}
// 使用 final 变量,代码简洁高效
final int MAX = 10;
for (int i = 0; i < 1000000; i++) {
doSomething(i, MAX);
}
使用 final
修饰的方法表示该方法是不能被覆盖(override)的。在继承关系中,如果一个子类继承了一个 final
方法,那么该子类不能覆盖这个方法,但是可以正常地调用它。这样可以防止子类修改已经被设计为最终的行为。
class Animal {
public final void eat() {
System.out.println("Animal is eating.");
}
}
class Cat extends Animal {
// 编译错误,无法覆盖 final 方法
public void eat() {
System.out.println("Cat is eating.");
}
}
使用 final
修饰的类表示该类是不能被继承的,即该类是最终的,不能再被其他类所继承。这样可以确保已经设计好的类不会被其他类所修改。
final class Animal {
// ...
}
// 编译错误,无法继承 final 类
class Cat extends Animal {
// ...
}
使用 final
修饰的参数表示其值不能被修改。这样可以确保方法中传递的参数不会被方法内部修改,从而保护方法的逻辑正确性。例如:
public void doSomething(final int num) {
// 编译错误,num 的值不能改变
num++;
// ...
}
final
是 Java 中的一个关键字,有多种用法。使用 final
可以使代码更加清晰,也可以提高程序的运行效率。在实际开发中,需要根据具体场景来选择合适的使用方式。