📜  Java final关键字(1)

📅  最后修改于: 2023-12-03 14:42:14.121000             🧑  作者: Mango

Java final 关键字

在 Java 中,final 是一个关键字,用于表示“最终”的含义。在不同的上下文中,final 的具体含义略有不同。本文将介绍 final 在 Java 中不同用法及其作用。

1. final 变量

使用 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);
}
2. final 方法

使用 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.");
    }
}
3. final 类

使用 final 修饰的类表示该类是不能被继承的,即该类是最终的,不能再被其他类所继承。这样可以确保已经设计好的类不会被其他类所修改。

final class Animal {
    // ...
}

// 编译错误,无法继承 final 类
class Cat extends Animal {
    // ...
}
4. final 参数

使用 final 修饰的参数表示其值不能被修改。这样可以确保方法中传递的参数不会被方法内部修改,从而保护方法的逻辑正确性。例如:

public void doSomething(final int num) {
    // 编译错误,num 的值不能改变
    num++;
    // ...
}
5. 总结

final 是 Java 中的一个关键字,有多种用法。使用 final 可以使代码更加清晰,也可以提高程序的运行效率。在实际开发中,需要根据具体场景来选择合适的使用方式。