在Java中连接字符串的最有效方法

时间:2016-03-21 00:26:47

标签: java stringbuffer

我的印象是StringBuffer是连接字符串的最快方法。但我看到了堆栈溢出的this帖子,说concat是最快的方法。我在Java 1.5,1.6和1.7中尝试了给出的2个例子我从来没有得到他们得到的结果。我的结果几乎与this

相似
  1. 有人能解释一下我在这里不明白的地方吗?什么是真的
  2. 方法会有效,因为两个字符串在多个字符串时效率不高? (如连接4变量S1,S2,S3,S4)

2 个答案:

答案 0 :(得分:7)

如果要连接两个字符串,

String.concat+运算符更快......虽然这可以随时修复,甚至可能已在java中修复8据我所知。

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

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

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

答案 1 :(得分:2)

我从其他人那里得到的答案如下:

如果您需要线程安全,请使用StringBuffer

如果您不需要线程安全:

如果事先知道字符串,并且出于某些原因需要多次运行相同的代码,请使用“+”,因为编译器将在编译期间优化并处理它。

如果只需要连接两个字符串,请使用concat(),因为它不需要创建StringBuilder / StringBuffer对象。积分给@nickb

如果需要连接多个字符串,请使用StringBuilder。