String v1="a";//(1)
String v2=new String("a");//(2)
String v3="a";//(3)
String v4="ab";
String v5=v4.subString(0,1);
第一種方式的定義,先在棧中 定義一個(gè)變量v1,然后在常量池未找到"a"的常量定義,然后生成一個(gè)“a”的常量,最后v1指向這個(gè)常量的地址。
第二張方式的定義,先在棧中 定義一個(gè)變量v2,然后在堆中new一個(gè)String類型的對(duì)象,賦值為"a",最后v2指向這個(gè)堆上的內(nèi)存。
第三種方式的定義,因?yàn)閮?nèi)存區(qū)域內(nèi)已經(jīng)有了一個(gè)"a"的常量,v3直接指向這個(gè)常量。
綜上,v1和v3的地址空間相同,v2是另外的一個(gè)地址空間。
v4指向的是"ab"的常量,subString實(shí)現(xiàn)的時(shí)候,除了對(duì)startIndex endIndex做了越界處理,就是調(diào)用了new String。所以v5是雖然值也是a,但是是另外一個(gè)new的對(duì)象。
v1==v3//true
v1==v2//false
v1==v5//false
//
以上問題涉及到j(luò)ava的內(nèi)存分配問題。變量,常量 都存在棧上,new 的對(duì)象,數(shù)組存在堆上。
String 類型 地址空間
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 弗洛伊德算法適用于為圖中每一個(gè)頂點(diǎn)求最短路徑,思路如下 檢查圖中任何一個(gè) 到 任何另一個(gè)點(diǎn)能否通過第一個(gè)點(diǎn)降低最短...
- Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
- 市場(chǎng)研究公司 IDC 發(fā)布的最新數(shù)據(jù)預(yù)測(cè),2015年第二季度,Apple Watch 全球的銷量為360萬。這個(gè)數(shù)...