图解java中String的不可变性
翻译自 What is string immutability
- 定义字符串
String s = "abcd";
s存储了字符串对象"abcd"的引用,也可以理解为s指向字符串对象"abcd"。
- 把一个String变量赋值给另一个String变量
String s2 = s;
s2也存储了字符串对象"abcd"的引用,s和s2都指向字符串对象"abcd"。
- 字符串连接
s = s.concat("ef");
这时s存储了一个新的字符串对象的引用,s指向新的字符串对象"abcdef"。
总结:
字符串一旦在内存(堆)中创建就不能改变。需要注意的是,String对象的所有方法都不会改变字符串本身,而是返回一个新的字符串对象。
如果需要可变的字符串,则需要使用StringBuffer或StringBuilder。否则每次创建新的字符串对象,将导致大量的时间耗费在垃圾回收(Garbage Collection)上。
StringBuilder mutableString = new StringBuilder();
mutableString.append("abcd");
mutableString.append("ef");
mutableString.toString();
网友评论