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