Difference among several ways of creating string [

2019-03-07 06:59发布

问题:

This question already has an answer here:

  • What is the difference between “text” and new String(“text”)? 11 answers

Several ways of creating string are shown below. Questions are added following the expressions in the way of comments.

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?

One additional question: Is there any difference bwtween the ways of creating str3 and str4?

回答1:

Whenever you call new in JAVA it create an object in heap and obviously it will call the constructor also.

String literals will go to String Constant Pool.

It might help you to understand it visually.