對於這個問題,網路上已經有較多的解答,大多數都是說string
和stringbuffer
,它們可以儲存和操作字串,即包含多個字元的字元資料。這個
string
類提供了數值不可改變的字串。而這個
stringbuffer
類提供的字串可以進行修改。當你知道字元資料要改變的時候你就可以使用
stringbuffer
。典型地,你可以使用
stringbuffers
來動態構造字元資料。那麼可能初學者可能就會有這樣的問題,怎麼不可變啊,比如如下的**
string str = "str";
str = "str1";
system.out.print("str");
那麼這個時候列印的不就是str1麼?怎麼沒有變啊?string建立的物件一樣改變了啊!其實是沒有變的,我想初學者忽略了這樣乙個問題,就是str = "str1";這句話的時候,其實是新建了乙個物件,並且讓引用str指向了這個位址,原來的「str」那個位址就被拋棄了。
接下來又引入了這樣乙個問題,到底string str=new string("abc");這樣一句話建立了幾個物件?我們可以把上面這行**分成string str、=、"abc"和new string()四部分來看待。string str只是定義了乙個名為str的string型別的變數,因此它並沒有建立物件;=是對變數str進行初始化,將某個物件的引用(或者叫控制代碼)賦值給它,顯然也沒有建立物件;現在只剩下new string("abc")了。那麼,new string("abc")為什麼又能被看成"abc"和new string()呢?我們來看一下被我們呼叫了的string的構造器:
public string(string original)
1、使用new建立物件。
2、呼叫class類的newinstance方法,利用反射機制建立物件。
我們正是使用new呼叫了string類的上面那個構造器方法建立了乙個物件,並將它的引用賦值給了str變數。同時我們注意到,被呼叫的構造器方法接受的引數也是乙個string物件,這個物件正是"abc"。所以引號引起來的部分其實也是乙個物件,這就正好解釋了上面提到的string建立的物件是不可以改變的了。
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...