代码:
String s = "a" + "b" + "c";
我想知道将为此语句创建多少个对象。
字符串池中将有一个字符串对象。在编译时"a" + "b" + "c"
解析为(参见JLS §15.28),所以你所拥有的相当于"abc"
String s = "abc";
StringBuilder
与重复问题的公认答案所断言的相反,这里不涉及 s。您甚至可以在字节码中看到这一点:
LDC "abc"
ASTORE 1
从上面的 JLS 链接:
类型的编译时常量表达式
String
始终是“内部的”,以便使用方法共享唯一实例String.intern
。