我想创建一个由大约 3000 个其他字符串连接而成的字符串。我听说使用这么多字符串可能效率低下,因为它们位于某种池中,并且在不需要它们后可能不会立即被 GC 拾取。
这是最好的解决方法吗-
StringBuilder sb = new StringBuilder("");
for(String s : arrayWith3000Strings)
{
sb.append(s);
}
还是应该将所有字符串连接成一个字符串?
我想创建一个由大约 3000 个其他字符串连接而成的字符串。我听说使用这么多字符串可能效率低下,因为它们位于某种池中,并且在不需要它们后可能不会立即被 GC 拾取。
这是最好的解决方法吗-
StringBuilder sb = new StringBuilder("");
for(String s : arrayWith3000Strings)
{
sb.append(s);
}
还是应该将所有字符串连接成一个字符串?
这绝对是首选 StringBuilder 的情况。
字符串是“不可变的”。任何修改字符串的操作(包括“追加”)都会创建一个新字符串。使用 stringbuilder 可以避免这笔费用。
此链接(众多链接之一)进一步解释:
是的,你的代码很好。
即使您使用字符串连接,它也会创建新String objects
的,因为字符串是不可变的。
StringBuffer
具有比 更好的性能StringBuilder
,但StringBuffer
不是线程安全的!
编辑:当然,反之亦然:)