我想创建一个字符串,它是通过连接大约3000个其他字符串而创建的。 我听说使用这么多字符串可能效率低下,因为它们存在于某种形式 游泳池可能不会在不需要后立即被GC取走。
这是最好的方法 -
StringBuilder sb = new StringBuilder("");
for(String s : arrayWith3000Strings)
{
sb.append(s);
}
或者我应该将所有字符串连接成一个字符串吗?
答案 0 :(得分:2)
这绝对是首选StringBuilder的情况。
字符串是“不可变的”。修改字符串的任何操作(包括“append”)都会创建一个新字符串。使用stringbuilder可以避免这种费用。
此链接(众多网站之一)进一步解释:
答案 1 :(得分:2)
是的,您的代码很好。
即使您使用字符串连接,它也会创建新的String objects
,因为字符串是不可变的。
答案 2 :(得分:-1)
StringBuffer
的效果甚至优于StringBuilder
,但StringBuffer
不是线程安全的!
编辑:当然,反之亦然:)