string一共創(chuàng)建了幾個對象 Stringstr=newString(“abc” ”def”)總共創(chuàng)建了幾個對象?
Stringstr=newString(“abc” ”def”)總共創(chuàng)建了幾個對象?Java中遇到雙引號時會創(chuàng)建四個對象(如果雙引號中的內(nèi)容不同),所以ABC和def會分別創(chuàng)建對象。同時,Java字符
Stringstr=newString(“abc” ”def”)總共創(chuàng)建了幾個對象?
Java中遇到雙引號時會創(chuàng)建四個對象(如果雙引號中的內(nèi)容不同),所以ABC和def會分別創(chuàng)建對象。同時,Java字符串是只讀的,所以在ABC def之后會生成一個新的對象(原來的對象還在內(nèi)存中),使用new操作符時會自動創(chuàng)建新的對象,所以一共有四個對象。
newstring產(chǎn)生多少對象?
String STR=new String(“ABC”)創(chuàng)建兩個字符串對象:您可以將以上代碼行分為四部分:String STR、=、“ABC”和new String()。String STR只定義一個字符串類型的變量STR,所以它不創(chuàng)建對象;=它初始化變量STR
String s=new String(“XYZ”)對象的數(shù)量可以分為兩種情況:
1。如果在字符串常識池中創(chuàng)建了“XYZ”,它將不會繼續(xù)創(chuàng)建,此時只創(chuàng)建一個新對象string(“XYZ”);
2。如果未在字符串常識池中創(chuàng)建“XYZ”,將創(chuàng)建兩個對象,一個值為“XYZ”,另一個值為new string(“XYZ”)。
Strings=newString("xyz")創(chuàng)建幾個對象?
String s=“123”在字符串常量池中創(chuàng)建一個值為“123”的字符串對象;String STR=new String(“123”)new關(guān)鍵字強(qiáng)制創(chuàng)建值為“123”的STR String對象,因為字符串常量池中已經(jīng)存在“123”,JVM直接獲取現(xiàn)有的字符串對象而不執(zhí)行需要創(chuàng)建另一個;因此,創(chuàng)建了兩個對象。假設(shè)池中不存在“123”,string STR=new string(“123”)將創(chuàng)建兩個對象。
關(guān)于String創(chuàng)建了多少個對象?
首先,Java虛擬機(jī)分為堆區(qū)、堆棧區(qū)、代碼區(qū)和數(shù)據(jù)區(qū)。創(chuàng)建一個對象。當(dāng)執(zhí)行string STR=new string(“SS”)時,一個內(nèi)存塊被分配給堆區(qū)域中的STR,內(nèi)容是SS。同時,堆棧區(qū)域中會有對STR的引用。比如,以QQ為例,QQ快捷方式在桌面上一點都沒有QQ.exe位置像把手QQ.exe如果該位置被視為堆區(qū)域,則桌面快捷方式位于堆棧區(qū)域。原理是添加這樣一個點:String STR=new String(“SS”)String s=“SS”String t=ssSystem.out.println文件(str==s)系統(tǒng)輸出打?。╯tr==t)系統(tǒng)輸出prtintln(s=t)輸出為假、假、真。還有恒定池的概念。新字符串()不通過常量池。如果你想知道,請留言
有很多方法:
假設(shè)C字符串被定義為char ch[]=“hello”World! "
1. 將C字符串傳遞給構(gòu)造函數(shù)以創(chuàng)建字符串對象:
string str(CH)
2。使用復(fù)制構(gòu)造函數(shù)創(chuàng)建字符串對象:
string STR=ch
3。在字符串類中為現(xiàn)有字符串對象定義的調(diào)用賦值運(yùn)算符:
string str
str=Ch
前兩個類似,但與第三個不同。前兩種是直接用構(gòu)造函數(shù)創(chuàng)建一個內(nèi)容與C字符串一致的string對象;第三種是C標(biāo)準(zhǔn)庫編寫的string類重載賦值運(yùn)算符,這樣就可以用C字符串作為右運(yùn)算符給string對象賦值,以便string對象的內(nèi)容與C字符串一致。