final

final关键字

  1. 修饰类:这个类不能被继承。
  2. 修饰方法:继承类不可以重写。private方法隐式被指定为final。
  3. 修饰变量:基本类型——数值一旦初始化则不能修改;引用类型:引用所引用的地址不能改变。

   

 string设计为final

    字符串是恒定的,创建之后它们的值不能被改变。常量池中的变量是共享的,如果可以修改,则在多线程中非常危险。

  1.  String不可改变的理解?

   String str = "abc"; str = "abc" + "123";

   String的值在常量池中被创建,这个值是不能被修改的。新生成的字符串会存到另一个地址。

   ("abc","abc123"会创建2个常量池对象,abc123是编译器常量,参考下面class文件)

  

   误区

   1:错把不可修改当作引用的地址。

   2:常量池中的数据是可以共享的。

        

posted @ 2018-03-22 17:35  一免  阅读(190)  评论(0编辑  收藏  举报