创建字符串的几种方法之间的差异

下面显示了几种创建字符串的方法。 在注释的表达式后面添加问题。

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的方式之间有什么区别吗?

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

字符串文字将转到String Constant Pool

它可能会帮助您直观地理解它。

在此处输入图像描述