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

文章标题:100道Java面试题之-Java中的final关键字有哪些用法?
  • 文章分类: 后端
  • 6931 阅读
在Java中,`final`关键字是一个非常重要的修饰符,它有多种用法,可以应用于类、方法、变量(包括成员变量和局部变量)以及参数。以下是`final`关键字的主要用法: ### 1. 修饰类 当`final`用于修饰一个类时,这个类就不能被其他类继承。这通常用于表示该类已经设计得非常完美,不需要再进行修改或扩展。例如: ```java public final class FinalClass { // ... } ``` ### 2. 修饰方法 当`final`用于修饰一个方法时,这个方法就不能被子类重写(override)。这有助于确保方法的行为在继承体系中保持不变。例如: ```java public class Parent { public final void finalMethod() { // ... } } public class Child extends Parent { // 下面的尝试会导致编译错误,因为finalMethod()不能被重写 // public void finalMethod() { ... } } ``` ### 3. 修饰变量 `final`修饰的变量是常量,其值在初始化之后不能被改变。这适用于基本数据类型和引用类型,但需要注意的是,对于引用类型的变量,其引用(即内存地址)不能改变,但对象本身的内容是可以改变的。例如: ```java final int FINAL_INT = 10; // 基本数据类型的常量 final String FINAL_STRING = "Hello"; // 引用类型的常量,但字符串本身是不可变的 final List finalList = new ArrayList<>(); finalList.add("item1"); // 可以改变列表的内容 // finalList = new ArrayList<>(); // 这会导致编译错误,因为finalList的引用不能改变 ``` ### 4. 修饰局部变量 在方法内部,`final`也可以用于修饰局部变量,以确保这些变量的值在初始化后不会被改变。这对于保证方法内部逻辑的正确性很有帮助。例如: ```java public void myMethod() { final int number = 10; // number的值在声明后不能被改变 // ... } ``` ### 5. 修饰参数 在方法定义中,`final`可以用于修饰参数,以确保参数在方法体内不会被重新赋值。但请注意,这并不保证参数所指向的对象的内容不会被改变(如果参数是引用类型的话)。例如: ```java public void someMethod(final int finalParam) { // finalParam = 20; // 这会导致编译错误,因为finalParam的值不能被改变 // ... } ``` ### 总结 `final`关键字在Java中用于表示“最终”或“不可变的”,它可以用于类、方法、变量以及参数,以提供额外的安全性和不变性保证。这些用法在Java编程中非常常见,特别是在设计不可变对象、确保方法行为不被覆盖以及管理不可变的集合时。
推荐文章