问题
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.
来源:https://stackoverflow.com/questions/23544752/difference-among-several-ways-of-creating-string