String與new String 的區別

2021-10-20 08:21:18 字數 636 閱讀 9414

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