我的印象是StringBuffer是连接字符串的最快方法.但我看到这篇 stackoverflow的帖子说concat是最快的方法.我在Java 1.5,1.6和1.7中尝试了给出的2个例子我从未得到他们得到的结果.我的结果几乎就像这样
String.concat+如果你连接两个字符串,它比运算符更快......虽然这可以在任何时候修复,甚至可以在java 8中修复,据我所知.
你引用的第一篇文章中遗漏的是作者正在连接两个字符串,而快速方法是新字符数组的大小预先计算为str1.length()+ str2.length( ),因此底层字符数组只需要分配一次.
使用StringBuilder()而不指定最终大小(这也是+内部工作方式)通常需要对底层数组进行更多分配和复制.
如果你需要将一堆字符串连接在一起,那么你应该使用StringBuilder.如果它是实用的,那么预先计算最终大小,以便底层数组只需要分配一次.
小智 6
我从别人的回答中了解到的内容如下:
如果需要线程安全,请使用StringBuffer
如果事先已知字符串,并且由于某些原因需要多次运行相同的代码,请使用“+”,因为编译器将在编译时本身优化和处理它。
如果只需要连接两个字符串,请使用 concat(),因为它不需要创建 StringBuilder/StringBuffer 对象。致谢@nickb
如果需要连接多个字符串,请使用 StringBuilder。
| 归档时间: |
|
| 查看次数: |
9102 次 |
| 最近记录: |