何时以及如何有效地使用StringBuilder / Buffer?

时间:2012-08-30 21:35:53

标签: java string stringbuilder stringbuffer

我想创建一个字符串,它是通过连接大约3000个其他字符串而创建的。 我听说使用这么多字符串可能效率低下,因为它们存在于某种形式 游泳池可能不会在不需要后立即被GC取走。

这是最好的方法 -

StringBuilder sb = new StringBuilder("");

for(String s : arrayWith3000Strings)
{
  sb.append(s);
}

或者我应该将所有字符串连接成一个字符串吗?

3 个答案:

答案 0 :(得分:2)

这绝对是首选StringBuilder的情况。

字符串是“不可变的”。修改字符串的任何操作(包括“append”)都会创建一个新字符串。使用stringbuilder可以避免这种费用。

此链接(众多网站之一)进一步解释:

答案 1 :(得分:2)

是的,您的代码很好。

即使您使用字符串连接,它也会创建新的String objects,因为字符串是不可变的。

答案 2 :(得分:-1)

StringBuffer的效果甚至优于StringBuilder,但StringBuffer不是线程安全的!

编辑:当然,反之亦然:)