String和StringBuffer的區別

2022-06-08 16:45:12 字數 1246 閱讀 9348

1.string:

​ 是物件不是原始型別.

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

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

​ string 是final類,是不能被繼承的。

2.stringbuffer:

​ 是乙個可變物件,對他進行修改時不需要重新建立物件。

​ 需要以構造命令進行建立,stringbuilder sb = new stringbuilder();,不能通過賦值命令進行賦值。

如此程式所示,string需要重新建立物件,原內容要被**,影響效能。

string str = new string("welcome to ");

str += "here";

故我們可以將程式改為:

string str = new string("welcome to ");

stringbuffer sb = new stringbuffer(str);

str = sb.tostring();

string類重寫了equals方法和hashcode方法,但是stringbuffer類沒有重寫equals方法和hashcode方法,所以請看下面的程式(摘自核心卷ⅰ p171):

string s = "ok";

stringbuffer sb = new stringbuffer(s);

system.out.println(s.hashcode()+" "+ sb.hashcode());// 2524 1355531311

string t = new string("ok");

stringbuffer tb = new stringbuffer(t);

system.out.println(t.hashcode()+" "+ tb.hashcode());// 2524 1435804085

字串s與t擁有相同的雜湊碼,這是因為字串的雜湊碼是由內容匯出的。而字串緩衝sb和tb卻有著不同的雜湊碼,這是因為在stringbuffer類中沒有定義哈市code方法,它的雜湊碼是由object類的預設hashcode方法匯出的物件儲存位址。考慮到因為建立stringbuffer時需要分配記憶體空間,造成 sb 和 tb hashcode不同。

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...