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方法共享唯一实例。