final
final关键字
- 修饰类:这个类不能被继承。
- 修饰方法:继承类不可以重写。private方法隐式被指定为final。
- 修饰变量:基本类型——数值一旦初始化则不能修改;引用类型:引用所引用的地址不能改变。
string设计为final
字符串是恒定的,创建之后它们的值不能被改变。常量池中的变量是共享的,如果可以修改,则在多线程中非常危险。
- String不可改变的理解?
String str = "abc"; str = "abc" + "123";
String的值在常量池中被创建,这个值是不能被修改的。新生成的字符串会存到另一个地址。
("abc","abc123"会创建2个常量池对象,abc123是编译器常量,参考下面class文件)
误区:
1:错把不可修改当作引用的地址。
2:常量池中的数据是可以共享的。