String 为什么是不可变的

什么是不可变的:就是说一个对象在创建完成后,不能再改变它的状态即这个对象是不可变的。

不能改变状态的意思是不能改变对象内的成员变量。包括基本类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。

例如:

String s = "123";
System.out.println("s = " + s);

s = "456";
System.out.println("s = " + s);

打印结果为:s=123 s=456
表面看上去 s 的值变了 实际上 s只是一个引用。只是引用发生了变化。
也就是说,s只是一个引用,它指向了一个具体的对象,当s=“123”; 这句代码执行过之后,又创建了一个新的对象“456”, 而引用s重新指向了这个新的对象,原来的对象“123”还在内存中存在,并没有改变。直到对象“123”被销毁。
内存结构如下图所示:

 

 

String的成员变量是private final 的,也就是初始化之后不可改变。

 

更深入就需要去看string 的定义了,string是final类型不可继承 不可改变。

 


posted @ 2017-02-16 15:29  奋斗的渣渣  阅读(279)  评论(0编辑  收藏  举报