String s1="a";String s2="b";String s3=s1+s2;一共創建了幾個物件?s3的“ab”是存在堆中嘛?常量池是否也會有一份“ab”?是不是一共創建了四個物件?
uj5u.com熱心網友回復:
常量池沒有“ab”,只有“a”和“b”還有,你這里所說的創建是指什么時候創建?如果是指代碼被執行的時候創建,那只有s3(嚴格來講還創建了StringBuilder),因為“a”和“b”在類加載的時候就已經被創建并放入常量池了,代碼只是讓變數參考常量池的物件,并不會創建物件。
這些你可以反編譯,看看偽代碼指令就知道
javap -c -v yourclass.class
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64737.html
標籤:Java SE
上一篇:重繪
下一篇:java.lang.NoClassDefFoundError:org/jetbrains/kotlin/annotation/plugin/ide/Annota
