【问题标题】:String object creation for concatenated results为串联结果创建字符串对象
【发布时间】:2015-05-13 16:34:43
【问题描述】:
当我创建这样的代码时:
String s ="hello";
String s1= new String("bye");
String s3=s1.concat(s);
String s4 = s.concat(s1);
这里s 是字面意思,s1 是在堆中。当我将两者连接并创建一个新对象时,它将在哪里创建(在堆中还是在内部?)
这里一个在池中,一个在堆中。
【问题讨论】:
标签:
java
string
concatenation
string-literals
【解决方案1】:
如果您看到concat() 方法的source,您将看到它返回一个新字符串
return new String(0, count + otherLen, buf);
所以字符串是在堆中创建的
【解决方案2】:
String concat() 将返回一个新的 String 对象而不是文字。
所以,它将是对象的存储位置,正如你所说,它应该是heap。
在文档中指定了新对象的创建
....一个新的字符串对象被创建,代表一个字符序列............