我们都知道,String 类型的对象一旦被创建就不能被改变,但是这句话到底是什么意思,今天查阅了一些资料,理解了一下:
比如;
String s="aaa";
s+="bbb";
那么此时 s 的指向就是"aaabbb" 这个字符串常量了,同时在常量池里面也创建了这个 "aaabbb" 对象,如下图:
第一次创建字符串常量"aaa" 的时候,在常量池里面就有一个 aaa, 此时 s 指向 aaa,如红线所示,然后对 s 进行了加操作,使 s 重新指向了 aaabbb,也就是蓝线,这时候,并没有改变原来所创建的对象 aaa,所以当每次对 s 进行修改的时候,都是以创建一个新对象为代价的