strings pool在jvm中的哪個(gè)位置
1 回答

侃侃無(wú)極
TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
舉個(gè)例子:
String str0 = "abc";
String str1 = new String("abc");
當(dāng)執(zhí)行String str0 =”abc”;時(shí),JVM會(huì)在棧中創(chuàng)建三個(gè)char型的值 ’a’ , ’b’ 和 ’c’ ,然后在堆中創(chuàng)建一個(gè)String對(duì)象,它的值(value)是剛才在棧中創(chuàng)建的三個(gè)char型值組成的數(shù)組{ ’a’ , ’b’ , ’c’ },最后這個(gè)新創(chuàng)建的String對(duì)象的值”abc”會(huì)被添加到字符串池中。如果我們接著執(zhí)行String str1=new String(”abc”);代碼,由于”abc”已經(jīng)被創(chuàng)建并保存于字符串池中,因此JVM只會(huì)在堆中新創(chuàng)建一個(gè)String對(duì)象,但是它的值(value)是共享前一行代碼執(zhí)行時(shí)在字符串池中的 ” abc ”
- 1 回答
- 0 關(guān)注
- 683 瀏覽
添加回答
舉報(bào)
0/150
提交
取消