String a = "aaa";
String b = "aaa";
System.out.println("aaaaaa" == "aaa"+ new String("aaa")); //false
System.out.println("aaaaaa" == "aaa"+"aaa");//true
System.out.println("aaaaa" == "aaa" + b); //false
- 總結(jié):
1.字面量 拼接 字面量器净,結(jié)果還是在常量池(內(nèi)存剖析中有說(shuō))中創(chuàng)造一個(gè)新的字面量。java字符串常量池只會(huì)產(chǎn)生一個(gè)相通的字符串常量
2.非字面量的字符串 拼接 字面量当凡,應(yīng)該還是在堆區(qū)開(kāi)辟的內(nèi)存地址山害。所以才會(huì)有上面的結(jié)果
3.拼接返回字面量中引用的有且只有中間那種情況
String s = new String("aaa");
- 執(zhí)行如下
1.先檢索字符串池是否有"aaa"對(duì)象,有則使用沿量,無(wú)則創(chuàng)建
2.然后用字符串池中的"aaa"對(duì)象來(lái)在堆中創(chuàng)建new String("aaa")對(duì)象粗恢,并且將引用賦值給棧區(qū)的s
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者