一般来说,在Java中使用 "StringBuilder "进行字符串连接是比较好的。情况总是这样吗?
我的意思是这样的:创建一个StringBuilder
对象,调用append()
方法,最后调用toString()
的开销已经小于用+
运算符串联两个字符串的开销,还是只适合于更多(超过两个)字符串?
如果有这样一个阈值,它取决于什么(也许是字符串的长度,但以何种方式)?
最后,你会用+'连接的可读性和简洁性来换取
StringBuilder'在两个、三个或四个字符串这样的小情况下的性能吗?
在过时的Java优化技巧和Java城市神话中提到,明确使用`StringBuilder'进行常规连接已经过时了。
一般来说,总是使用更可读的代码,只有在性能有问题的情况下才进行重构。在这种特定的情况下,最近的JDK实际上会在任何情况下将代码优化为StringBuilder版本。
通常只有当你在一个循环中进行字符串连接,或者在一些复杂的代码中,编译器不容易优化的情况下,你才真正需要进行手动操作。
请看:http://www.javaspecialists.eu/archive/Issue068.html 和 http://www.javaspecialists.eu/archive/Issue105.html
在你的环境中做同样的测试,检查较新的JDK或你的Java实现是否用 "String "或 "StringBuilder "更好地进行某种类型的字符串操作。