如果字符串池中包含兩個字符串string1
和string2
引用字符串文字,將System.out.println(string1 + string2)
生成字符串池中的附加字符串對象爲string3=string1+string2;
?如果不是,爲什麼?是否有爲S.O.P創建的新字符串對象?
爲了更清楚地添加在這種情況下在池中分配了多少個對象?
如果字符串池中包含兩個字符串string1
和string2
引用字符串文字,將System.out.println(string1 + string2)
生成字符串池中的附加字符串對象爲string3=string1+string2;
?如果不是,爲什麼?是否有爲S.O.P創建的新字符串對象?
爲了更清楚地添加在這種情況下在池中分配了多少個對象?
表達
"string1" + "string2"
將導致字符串常量
"string1string2"
在創建編譯時間,並加入到封閉類的常量池。
表達
string1 + string2
其中string1
和string2
是任意String
-typed變量將編譯成連接兩個字符串的可執行代碼。結果不會被提交給池。
和System.out.print(string1 +「string3」+ string2)呢? – Prashant
整個表達式必須是編譯時常量。兩個變量之間的一個字面意義不大。 –
[此問題]可能的重複(http://stackoverflow.com/questions/11989261/does-concatenating-strings-in-java-always-lead-to-new-strings-being-created-in-m ) –