String對象不可變

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

這兩行代碼執行後,原始的String對象中的內容是否改變?

不會改變。因爲String類爲final類型,它的所有對象都是不可變對象。在這段代碼中,s原先指向一個String對象,內容是”Hello”,它在字符串常量池中。然後我們對s進行了+操作,這時s不再指向原來那個對象了,而指向另一個String對象,內容爲“Hello world!”,原來那個對象還存在於內存之中,只是s這個引用變量不再指向它了。
因爲String對象建立之後不能再改變,所以對於每一個不同的字符串,都需要一個String對象來表示,這會造成很大的內存開銷,這時,應該考慮StringBuffer類,它允許修改,而不是每個不同的字符串都要生成一個新的對象。

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