Difference among several ways of creating string [duplicate]

邮差的信 提交于 2019-12-04 07:14:19

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!