JDK源码解读--String

  

    文章使用的源码是jdk1.8的。(下同)

    1.首先可以看到`String`是`final`类,说明该类不可继承,保证不会被子类改变语义

    2.String的值实际上就是一个字符数组对象,字符数组成员变量`value`使用`final`修饰,说明该引用地址不变(不可指向其他对象)但是该数组对象本身是可以改变的,同时`value`使用private 修饰,String中也没有提供可以让外部访问该属性的方法,所有返回类型为String的方法,都只是返回了新的String对象,例如如substring

 

 

以上的两点都是为了保证String的不变性,String类注释中有提到

* Strings are constant; their values cannot be changed after they
* are created. String buffers support mutable strings.
* Because String objects are immutable they can be shared.

意思是字符串是常量,一旦创建对象,他们的值就无法改变,这里提到String buffers(StringBuffer StringBuilder)支持可变字符串,由于不可变的特性,使得字符串对象可以被共享,因为不可改变,所以线程安全;

 

扫描二维码关注公众号,回复: 6211831 查看本文章

 

 

  

 

猜你喜欢

转载自www.cnblogs.com/qzlcl/p/10852801.html