是否为S.O.P创建了一个新的字符串对象?

时间:2014-02-28 12:39:43

标签: java string-concatenation

如果字符串池中包含两个字符串string1string2引用字符串文字,那么System.out.println(string1 + string2)会在字符串池中生成string3=string1+string2;的其他字符串对象吗?如果没有,为什么?

想要更清楚地添加在这种情况下在池中分配了多少个对象?

1 个答案:

答案 0 :(得分:2)

表达式

"string1" + "string2"

将导致字符串常量

"string1string2"

编译时创建并添加到封闭类的常量池中。

表达式

string1 + string2

其中string1string2是任意String - 类型变量将编译为可执行代码,该代码连接两个字符串。结果未提交到池中。