java - 连接字符串的最有效方法

标签 java stringbuffer

我的印象是 StringBuffer 是连接字符串的最快方法,但我看到了 this Stack Overflow 帖子说 concat() 是最快的方法。我在 Java 1.5、1.6 和 1.7 中尝试了 2 个给出的示例,但我从未得到他们所做的结果。我的结果几乎与 this 相同

  1. 有人可以解释一下我在这里不明白的地方吗?在 Java 中连接字符串真正最快的方法是什么?

  2. 当寻求连接两个字符串的最快方法和连接多个字符串时是否有不同的答案?

最佳答案

String.concat+ 运算符更快,如果您连接两个 字符串...虽然这可以随时修复据我所知,甚至可能已在 Java 8 中得到修复。

您在引用的第一篇文章中遗漏的是作者正在连接 两个 字符串,快速方法是预先计算新字符数组大小的方法str1.length() + str2.length(),所以底层字符数组只需要分配一次。

在不指定最终大小的情况下使用 StringBuilder(),这也是 + 内部工作的方式,通常需要对底层数组进行更多分配和复制。

如果您需要将一堆字符串连接在一起,那么您应该使用 StringBuilder。如果可行,则预先计算最终大小,以便底层数组只需要分配一次。

关于java - 连接字符串的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121370/

相关文章:

java - 使用 java 中的流编写/创建具有 3 个唯一随机数的 int[] 的最短方法是什么?

java - 如何使用 s/mime 和 x509 证书加密整个 json 数据

java - 使用 StringBuilder 在代码上运行 pmd 会给出有关初始化大小和附加大小的错误

java - 基于字符串的游标定位

java - Java 和 Android 中 StringBuffer 类的不同行为

java - 使用 Stringbuilder 的神秘空白

java - 我遇到 Android 微调器或阵列适配器错误,但我不确定

java - Spring注入(inject)静态(全局)单例

java - Java中如何在字符串中插入字符

java - StringBuffer 与普通打印