"555" + ""
是一个编译时常量,而
giveLiteralString() + ""
不是。因此,前者仅编译为字符串常量“ 555”,而后者则编译为实际的方法调用和串联,从而生成一个新的String实例。
另请参见JLS§3.10.5(字符串文字):
在运行时通过串联计算的字符串是新创建的,因此是不同的。

"555" + ""
是一个编译时常量,而
giveLiteralString() + ""
不是。因此,前者仅编译为字符串常量“ 555”,而后者则编译为实际的方法调用和串联,从而生成一个新的String实例。
另请参见JLS§3.10.5(字符串文字):
在运行时通过串联计算的字符串是新创建的,因此是不同的。