我的印象是StringBuffer是连接字符串的最快方法。但我看到了堆栈溢出的this帖子,说concat是最快的方法。我在Java 1.5,1.6和1.7中尝试了给出的2个例子我从来没有得到他们得到的结果。我的结果几乎与this
相似答案 0 :(得分:7)
String.concat
比+
运算符更快......虽然这可以随时修复,甚至可能已在java中修复8据我所知。
您在引用的第一篇文章中遗漏的是作者正在连接两个字符串,而快速方法是预先计算新字符数组大小的方法str1.length()+ str2.length(),因此底层字符数组只需要分配一次。
使用StringBuilder()而不指定最终大小,这也是+
内部工作的方式,通常需要对底层数组进行更多分配和复制。
如果你需要将一堆字符串连接在一起,那么你应该使用StringBuilder。如果它是实用的,那么预先计算最终大小,以便底层数组只需要分配一次。
答案 1 :(得分:2)
我从其他人那里得到的答案如下:
如果您需要线程安全,请使用StringBuffer
如果事先知道字符串,并且出于某些原因需要多次运行相同的代码,请使用“+”,因为编译器将在编译期间优化并处理它。
如果只需要连接两个字符串,请使用concat(),因为它不需要创建StringBuilder / StringBuffer对象。积分给@nickb
如果需要连接多个字符串,请使用StringBuilder。