我经历过有关字符串连接性能的不同主题。几乎答案都建议使用StringBuilder
或StringBuffer
来降低开销成本(如果在循环外使用串联语句,则使用+
运算符)。很明显,但是我仍然想知道Java为什么有String format()
和concat()
方法,尽管它无效。此处的性能测试:link。有人提到字符串format()
可能对Localization
有用(我不太了解,但是我以后已经有一个要搜索的关键字了),但是剩下的目的是什么?它仅对向后兼容有用吗?
答案 0 :(得分:2)
String#concat
和+
的存在是为了在String类型上提供简约的一组操作。
如果多次使用,效率会很低。
但是您不希望使用StringBuilder指定它们作为类型操作"xxx" + "yyy"
的权利。 (此外,还有一个编译时级联。)
StringBuffer
是恕我直言的错误。较新的StringBuilder
同步时速度较慢,但是很少会在两个线程(无序)中添加一些东西。
String::concat
可能是对减少流等有用的方法参考。