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