Java中final关键字的作用?
在Java中,final 关键字用于表示不可变性,具体作用取决于它修饰的目标(变量、方法或类)。以下是其核心作用:
1. 修饰变量(常量)
-  基本类型变量:值不可更改(常量)。 final int MAX_VALUE = 100; // MAX_VALUE = 200; // 编译错误,不能重新赋值
-  引用类型变量:引用地址不可更改(但对象内部状态可能可变)。 final List<String> list = new ArrayList<>(); list.add("Hello"); // 允许修改对象内容 // list = new ArrayList<>(); // 编译错误,不能重新赋值引用
-  注意:必须在声明时或构造方法/代码块中初始化。 
2. 修饰方法
-  禁止子类重写:父类中的 final方法不能被子类覆盖。class Parent {final void show() { System.out.println("不可重写"); } } class Child extends Parent {// void show() { } // 编译错误,不能重写final方法 }
3. 修饰类
-  禁止继承: final类不能被其他类继承(如String、Integer等)。final class ImmutableClass { } // class SubClass extends ImmutableClass { } // 编译错误
4. 其他场景
-  方法参数:参数在方法内不能被重新赋值(仅限引用地址)。 void process(final int x) {// x = 10; // 编译错误 }
-  线程安全: final变量的初始化保证对其他线程可见(无需同步)。
关键区别总结
| 修饰目标 | 作用 | 
|---|---|
| 变量 | 值/引用不可变 | 
| 方法 | 不可重写 | 
| 类 | 不可继承 | 
设计意义
-  清晰性:明确标识不可变的设计意图。 
-  安全性:防止意外修改(如常量、核心类库)。 
-  性能优化:JVM可能对 final进行优化(如内联)。
通过合理使用 final,可以提升代码的健壮性和可维护性。
