Difference among several ways of creating string [

2019-03-07 06:45发布

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?

1条回答
2楼-- · 2019-03-07 07:02

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.

enter image description here

查看更多
登录 后发表回答