为以下内容创建了多少个字符串对象?

Anu*_*jee 3 java string

String summer = new String("Summer");
String summer2 = "Summer";
System.out.println("Summer");
System.out.println("autumn");
System.out.println("autumn" == "summer");
String autumn = new String("Summer");
Run Code Online (Sandbox Code Playgroud)

我的答案是2 + 0 + 0 + 1 + 1 + 1 = 5.这是对的吗?

Ale*_*exR 5

对我来说听起来很合理.

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

创建了2个实例.第一个是文字"Summer".第二个是因为构造函数被调用.

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

0个实例:这只是一个引用赋值.

System.out.println("Summer");
Run Code Online (Sandbox Code Playgroud)

0个实例.文字"Summer"取自缓存.

System.out.println("autumn");
Run Code Online (Sandbox Code Playgroud)

1个实例 "autumn"

System.out.println("autumn" == "summer");
Run Code Online (Sandbox Code Playgroud)

1个实例 "summer"

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

由构造函数调用引起的1个实例.文字"Summer"取自缓存.

底线:2 + 0 + 0 + 1 + 1 + 1 = 5

  • 在Java 7中,它根据需要创建字符串文字,但在Java 6中,它在类加载时执行,这可能会改变您的答案. (2认同)