代码:
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。