final
关键字修饰不同位置有对应的含义
- 修饰类, 表示该类不可继承
- 修饰方法, 表示该方法不能被子类重写
- 修饰成员变量
- 基本数据类型, 那么值不可修改
- 引用类型, 引用的对象指向不可修改 (对象自身属性可以修改)
final
不能修饰 interface
因为接口本身是为了实现的, 而 final
理念与之相反
final 修饰字符串变量时, 会自动优化为字符串常量
/**
* final 字符串变量 在编译期会自动优化为常量字符串
*/
@Test
public void testFinalStrAppend() {
// final 类型的变量也会认为是常量
final String def = "3";
// 编译期直接优化为 12345
String str = "1" + "2" + def + "4" + "5";
System.out.println(str);
}