-3

下面显示了几种创建字符串的方法。问题以评论的方式添加到表达式之后。

String str = "test";
String str1 = new String(str);  //Will it invoke the Constructor of String(String)?
String str2 = new String("test");//Will it invoke the Constructor of String(String)?
String str3 = str; //Which Constructor will it invoke? Or str3 only reference to str and "test" without being constructed?
String str4 = "test";//Which Constructor will it invoke? Or str4 only reference to str and "test" without being constructed?
String strnew = new String("testnew");//Will this expression create "testnew" in String Constant Pool before it creates strnew?

另一个问题:创建 str3 和 str4 的方式有什么不同吗?

4

1 回答 1

5

每当您new在 JAVA 中调用时,它都会在堆中创建一个对象,显然它也会调用构造函数。

字符串文字将转到String Constant Pool.

它可能会帮助您从视觉上理解它。

在此处输入图像描述

于 2014-05-08T14:33:58.643 回答