1

我想创建一个由大约 3000 个其他字符串连接而成的字符串。我听说使用这么多字符串可能效率低下,因为它们位于某种池中,并且在不需要它们后可能不会立即被 GC 拾取。

这是最好的解决方法吗-

StringBuilder sb = new StringBuilder("");

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

还是应该将所有字符串连接成一个字符串?

4

3 回答 3

2

这绝对是首选 StringBuilder 的情况。

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

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

于 2012-08-30T21:37:55.317 回答
2

是的,你的代码很好。

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

于 2012-08-30T21:38:23.807 回答
-1

StringBuffer具有比 更好的性能StringBuilder,但StringBuffer不是线程安全的!

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

于 2012-08-30T21:39:48.610 回答