当前位置: 技术文章>> 100道Java面试题之-Java中的final关键字有哪些用法?

文章标题:100道Java面试题之-Java中的final关键字有哪些用法?
  • 文章分类: 后端
  • 7091 阅读

在Java中,final关键字是一个非常重要的修饰符,它有多种用法,可以应用于类、方法、变量(包括成员变量和局部变量)以及参数。以下是final关键字的主要用法:

1. 修饰类

final用于修饰一个类时,这个类就不能被其他类继承。这通常用于表示该类已经设计得非常完美,不需要再进行修改或扩展。例如:

public final class FinalClass {
    // ...
}

2. 修饰方法

final用于修饰一个方法时,这个方法就不能被子类重写(override)。这有助于确保方法的行为在继承体系中保持不变。例如:

public class Parent {
    public final void finalMethod() {
        // ...
    }
}

public class Child extends Parent {
    // 下面的尝试会导致编译错误,因为finalMethod()不能被重写
    // public void finalMethod() { ... }
}

3. 修饰变量

final修饰的变量是常量,其值在初始化之后不能被改变。这适用于基本数据类型和引用类型,但需要注意的是,对于引用类型的变量,其引用(即内存地址)不能改变,但对象本身的内容是可以改变的。例如:

final int FINAL_INT = 10;  // 基本数据类型的常量
final String FINAL_STRING = "Hello";  // 引用类型的常量,但字符串本身是不可变的
final List<String> finalList = new ArrayList<>();
finalList.add("item1");  // 可以改变列表的内容
// finalList = new ArrayList<>();  // 这会导致编译错误,因为finalList的引用不能改变

4. 修饰局部变量

在方法内部,final也可以用于修饰局部变量,以确保这些变量的值在初始化后不会被改变。这对于保证方法内部逻辑的正确性很有帮助。例如:

public void myMethod() {
    final int number = 10;  // number的值在声明后不能被改变
    // ...
}

5. 修饰参数

在方法定义中,final可以用于修饰参数,以确保参数在方法体内不会被重新赋值。但请注意,这并不保证参数所指向的对象的内容不会被改变(如果参数是引用类型的话)。例如:

public void someMethod(final int finalParam) {
    // finalParam = 20;  // 这会导致编译错误,因为finalParam的值不能被改变
    // ...
}

总结

final关键字在Java中用于表示“最终”或“不可变的”,它可以用于类、方法、变量以及参数,以提供额外的安全性和不变性保证。这些用法在Java编程中非常常见,特别是在设计不可变对象、确保方法行为不被覆盖以及管理不可变的集合时。

推荐文章