This question already has an answer here:
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?
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.
来源:https://stackoverflow.com/questions/23544752/difference-among-several-ways-of-creating-string