String s = "sss"; 不可变是说对象new String("sss")是不可变的,你写s="ddd",创建了一个新的new String("ddd")对象,并让引用s 指向这个对象的地址,原来的sss被就被抛弃了。
String s = "sss";
s+= "ddd";
这样也是可以的,是不是s也是可变的呢?
实际上JVM是生成了一个临时对象BufferString,将两个字符串拼接后再保存为新对象,然后将引用s指向新对象。
在这一个简单的一次拼接过程中,我们让程序创建了四个对象:两个待拼接的String,一个临时StringBuffer,和最后将StringBuffer转型成为的String--它当然不是最初的sss了,这个引用的名称没变,但它指向了新的String对象。
java里String 和StringBuffer的区别
最新推荐文章于 2022-06-15 09:52:09 发布
本文详细解析了Java中字符串拼接的过程,包括原始字符串的不可变性、临时对象BufferString的创建以及最终字符串对象的生成。通过实例演示了在一次拼接操作中对象的创建过程,解释了为何原始字符串在拼接后被替代。
1320

被折叠的 条评论
为什么被折叠?



