【发布时间】:2010-10-16 04:02:33
【问题描述】:
复制
我很好奇这两者有什么区别。
我对字符串池的理解是这样的:
这会在字符串池中创建 3 个字符串对象,其中 2 个所有引用都丢失了。
String mystr = "str";
mystr += "end";
这不也是在字符串池中创建3个对象吗?
String mystr = "str";
mystr = mystr.concat("end")
我知道当需要进行大量连接时,StringBuilder 和 StringBuffer 在内存使用方面的效率要高得多。我只是好奇 + 运算符和 concat 在内存使用方面是否有任何区别。
【问题讨论】:
-
我认为这里只实习了 2 个字符串; “str”和“end”。字符串 'strend' 没有被保留,因为它不是文字;你必须手动实习。有人可以确认/否认吗?
-
在完全相同的副本中查看我的答案:stackoverflow.com/questions/47605/java-string-concatenation
-
@Outlaw 在生成的代码中我看到没有调用实习生,但我没有查看 concat 的源代码,我不知道是否允许 VM 实习或编译器是否允许必须。