String对象不可变

String s = "Hello";
s = s + " world!";

这两行代码执行后,原始的String对象中的内容是否改变?

不会改变。因为String类为final类型,它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是”Hello”,它在字符串常量池中。然后我们对s进行了+操作,这时s不再指向原来那个对象了,而指向另一个String对象,内容为“Hello world!”,原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。
因为String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示,这会造成很大的内存开销,这时,应该考虑StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章