final 关键字有哪些用法?
发布于
一、修饰类
final 修饰的类不能被继承,如 String、Math。常用于工具类或不希望被扩展的类。
二、修饰方法
final 方法不能被子类重写,防止子类改变父类行为。构造方法隐式为 final。
三、修饰变量
- 成员变量:必须在声明时、构造方法或初始化块中赋值,赋值后不可改。
- 局部变量:使用前必须赋值,赋值后不可改。
- 引用变量:引用本身不可变,但引用指向的对象内容可变。
final List<String> list = new ArrayList<>();
list.add("a"); // 合法:对象内容可变
list = new ArrayList<>(); // 非法:引用不可重新指向
四、编译期常量
final + 基本类型/String + 编译期可知的值,编译器会做常量内联优化。