-2

代码:

String s = "a" + "b" + "c";

我想知道将为此语句创建多少个对象。

4

1 回答 1

5

字符串池中将有一个字符串对象。在编译时"a" + "b" + "c"解析为(参见JLS §15.28),所以你所拥有的相当于"abc"

String s = "abc";

StringBuilder与重复问题的公认答案所断言的相反,这里不涉及 s。您甚至可以在字节码中看到这一点:

LDC "abc"
ASTORE 1

从上面的 JLS 链接:

类型的编译时常量表达式String始终是“内部的”,以便使用方法共享唯一实例String.intern

于 2013-09-18T17:22:48.890 回答