##string與new string()的區別
jvm為了提公升效能和減少記憶體開銷,避免字串的重複建立,維護了一塊特殊的記憶體空間——字串例項池。
string賦值的兩種方式。
1、string str = 「test」;
以這種方式賦值時,jvm會先從字串例項池中查詢是否存在"test"這個物件,
如果存在,直接把例項池中"test"的位址返回給str。如果不存在,則會在例項池中建立"test"物件,並把該物件的位址返回給str。
所以通過==比較是,str1,str2指向的是同一位址,所以返回true;
2、string str = new string(「test」);
以這種方式賦值時,jvm會先從字串例項池中查詢是否存在"test"這個物件,
若不存在則會在例項池中建立"test"物件,同時在堆中建立"test"這個物件,然後將堆中的這個物件的位址返回賦給引用str。
若例項池存在則直接在堆中建立"test"這個物件,然後將堆中的這個物件的位址返回賦給引用str。
這時str1和str2分別指向堆中不同的位址,所以返回false;
String與string的區別
1 string是乙個類,string是一種資料型別.2 string是c 中的類,string是.net framework的類 在c ide中不會顯示藍色 3 c string對映為.net framework的string 4 如果用string,編譯器會把它編譯成string,所以如果直接用...
string與string標頭檔案
先來段 我是在vs2012上實驗的 include stdafx.h include include include using namespace std int tmain int argc,tchar argv cout endl for rit mapstudent.rbegin rit m...
String與string的區別
c 是區分大小寫的,但是我卻發現c 中同時存在string與string,於是我很困惑,於是我上網搜尋了一下,於是我了解了一些小知識。msdn中對string的說明 stringis analiasforstringin the net framework。string是string的別名而已,st...