final 关键字有哪些用法?

发布于

一、修饰类

final 修饰的类不能被继承,如 String、Math。常用于工具类或不希望被扩展的类。

二、修饰方法

final 方法不能被子类重写,防止子类改变父类行为。构造方法隐式为 final。

三、修饰变量

  • 成员变量:必须在声明时、构造方法或初始化块中赋值,赋值后不可改。
  • 局部变量:使用前必须赋值,赋值后不可改。
  • 引用变量:引用本身不可变,但引用指向的对象内容可变。
final List<String> list = new ArrayList<>();
list.add("a");        // 合法:对象内容可变
list = new ArrayList<>(); // 非法:引用不可重新指向

四、编译期常量

final + 基本类型/String + 编译期可知的值,编译器会做常量内联优化。