String和stringBuffer類字符串的區別

發表于:2007-06-10來源:作者:點擊數: 標簽:
前面看到有人寫String和stringBudffer的區別是前者是不能改寫的,后者是可以改寫的 我覺得說String的字符串不能改變話是不錯,但是例子要舉好 看看下面這個簡單的例子: 首先, 打印的結果是:一個內存空間 這里==的意義是兩個操作數是否指向同一個對象 可見s2在

 

 

 

 

 

 

 

 

前面看到有人寫String和stringBudffer的區別是前者是不能改寫的,后者是可以改寫的

我覺得說String的字符串不能改變話是不錯,但是例子要舉好

看看下面這個簡單的例子:

首先,

打印的結果是:一個內存空間

這里==的意義是兩個操作數是否指向同一個對象

可見s2在不用new創建的情況下會自動檢索到具有相同內容的內存空間中共享,那么既然s1和s2共享了同一個對象

再看下面的代碼

代碼結果是

You are fired!

不是一個內存空間

可見,String中s1的內容雖然被改寫,但是已經不在是原來第一次分配到的那個內存空間,也就是String類的內容能被改變,但一旦改變系統將為其分配新的內存

說到與stringBuffer的區別,從根本上來說應該是

stringBuffer在做字符長度變動的時候將繼續使用原來的內存空間,不新分配.

而String的長度一旦變動,就如上面的例子一樣,其內部將分配新的內存空間.

(t006)





原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97