String和StringBuffer的區別

2021-07-27 02:21:00 字數 1084 閱讀 7548

string:

是物件不是原始型別.

為不可變物件,一旦被建立,就不能修改它的值.

對於已經存在的string物件的修改都是重新建立乙個新的物件,然後把新的值儲存進去.

string 是final類,即不能被繼承.

stringbuffer:

字串連線操作中stringbuffer的效率要明顯比string高:

string物件是不可變物件,每次操作sting 都會重新建立新的物件來儲存新的值.

stringbuffer物件例項化後,只對這乙個物件操作。

我這裡寫了乙個小的例子,來測試string和stringbuffer在時間和空間使用上的差別。

public class test   

long endfreememory = runtime.freememory();

long end = system.currenttimemillis();

system.out.println("操作耗時:" + (end - start) + "ms," + "記憶體消耗:"

+ (startfreememory - endfreememory)/1024 + "kb");

} }

測試結果:

使用string做10000次向一字串後新增字串

操作耗時:1872ms,記憶體消耗:1301kb

使用stringbuffer做10000次向一字串後新增字串

操作耗時:15ms,記憶體消耗:162kb

stringbuffer作為形參時,如果對變數進行修改:

public static void main(string args)

public static void change(stringbuffer sb1, stringbuffer sb2)

拼接後,sb2所指向的位址沒變,但是其中的內容變了。string就不會變,因為string會重新建立乙個變數,然後賦給新的值。

參考:stringbuffer作為形式引數傳遞

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string 對映為 framework的 string。如...

String和string的區別

最近老看見有人在論壇上問string和string有什麼區別,答案五花八門差點兒沒讓我背過氣去,乾脆放到blog上來,論壇上就貼位址了 首先,在一般情況下,string和string是一樣的,但是他們也存在如下區別 1 string始終代表 system.string 1.x 或 system.st...

String和string的區別

msdn中對string的說明 string is an alias for string in the net framework。string是string的別名而已,string是c 中的類,string是framework的類,c string對映為framework的string。如果用s...