这里有一组图表阐述了java String 对象的 不变性。
- String 的声明1String s = "abcd";
s 储存着String对象的引用,下面的箭头应该解释为”内存的引用”
- 用一个String变量给另一个String变量赋值1String s2 = s;
因为是同样的对象,所以s2存储的是同样的内存引用
- 字符串的连接1s = s.contact("abc");
s现在存储的是重新被创造出来的对象引用。
总结:
一旦String对象在内存(heap区) 中被创建了。它就不能改变,
所以我们应该注意,一旦有String的方法想改变String.
我们还不如重新创造一个String对象。
如果我们需要创建可变的String对象。 我们可以使用 StringBuffer 或者 StringBuilder. 否则,很多时间可能被浪费在垃圾回收上。因为每一次都会有一个新的对象产生。