我的印象是 StringBuffer
是连接字符串的最快方法,但我看到了 this Stack Overflow 帖子说 concat() 是最快的方法。我在 Java 1.5、1.6 和 1.7 中尝试了 2 个给出的示例,但我从未得到他们所做的结果。我的结果几乎与 this 相同
有人可以解释一下我在这里不明白的地方吗?在 Java 中连接字符串真正最快的方法是什么?
当寻求连接两个字符串的最快方法和连接多个字符串时是否有不同的答案?
最佳答案
String.concat
比 +
运算符更快,如果您连接两个 字符串...虽然这可以随时修复据我所知,甚至可能已在 Java 8 中得到修复。
您在引用的第一篇文章中遗漏的是作者正在连接 两个 字符串,快速方法是预先计算新字符数组大小的方法str1.length() + str2.length(),所以底层字符数组只需要分配一次。
在不指定最终大小的情况下使用 StringBuilder(),这也是 +
内部工作的方式,通常需要对底层数组进行更多分配和复制。
如果您需要将一堆字符串连接在一起,那么您应该使用 StringBuilder。如果可行,则预先计算最终大小,以便底层数组只需要分配一次。
关于java - 连接字符串的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121370/