前面看到有人寫String和stringBudffer的區別是前者是不能改寫的,后者是可以改寫的
我覺得說String的字符串不能改變話是不錯,但是例子要舉好
看看下面這個簡單的例子:
首先,
打印的結果是:一個內存空間
這里==的意義是兩個操作數是否指向同一個對象
可見s2在不用new創建的情況下會自動檢索到具有相同內容的內存空間中共享,那么既然s1和s2共享了同一個對象
再看下面的代碼
代碼結果是
You are fired!
不是一個內存空間
可見,String中s1的內容雖然被改寫,但是已經不在是原來第一次分配到的那個內存空間,也就是String類的內容能被改變,但一旦改變系統將為其分配新的內存
說到與stringBuffer的區別,從根本上來說應該是
stringBuffer在做字符長度變動的時候將繼續使用原來的內存空間,不新分配.
而String的長度一旦變動,就如上面的例子一樣,其內部將分配新的內存空間.
(t006)
原文轉自:http://www.anti-gravitydesign.com