如果字符串池中包含两个字符串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 ) –