我正在阅读认证书,在这里我遇到了令人困惑的问题。书中说这行代码只创建一个String对象,但我认为创建了2个对象。我是对的吗?
String summer = new String("Summer");
不是常数文字"夏天"创建并放置在String常量池中?
编辑:伙计们我感到困惑,我需要确切的答案。这里有不同的帖子说1对象& 2对象正在创建。答案 0 :(得分:6)
创建可能是您混淆的原因。实际上,你是对的:行
中涉及两个字符串实例String summer = new String("Summer");
由于涉及两个字符串实例,因此必须在某个时间和某个时间创建它们。
创作时间差别很大。 "Summer"
是一个常量,在加载包含此常量的类时会加载到内部字符串池中。因此,在加载类时会创建此内部字符串实例。
在运行包含此行的代码时,会创建变量summer
引用的字符串对象。那就是它。
答案 1 :(得分:1)
String summer = new String("Summer");
这将只创建一个String实例。 <= 1}}之前,它不会出现在字符串池中。