创建的String对象数

Ars*_*yan 3 java string

我正在阅读认证书,在这里我遇到了令人困惑的问题.书中说这行代码只创建一个String对象,但我认为创建了2个对象.我对吗?

String summer = new String("Summer");
Run Code Online (Sandbox Code Playgroud)

不是常量文字"Summer"创建并放置在String常量池中吗?

编辑:伙计们我很困惑我需要确切的答案.这里有不同的帖子说1对象和2对象正在创建.

See*_*ose 6

创作可能是你的困惑的原因.实际上,你是对的:该行中涉及两个字符串实例

String summer = new String("Summer");
Run Code Online (Sandbox Code Playgroud)

由于涉及两个字符串实例,因此必须在某个时间创建它们.

创作时间是最大的不同.这"Summer"是一个常量,在加载包含此常量的类时会加载到内部字符串池中.因此,在加载类时会创建此内部字符串实例.

summer在运行包含此行的代码时,将创建变量引用的字符串对象.而已.