StringBuffer 已过时?
2022-08-31 20:28:06
在《有效的Java》一书中,Josh Bloch说:
StringBuffer在很大程度上已经过时了,应该被非同步的实现“StringBuilder”所取代。
.
但根据我的经验,我仍然看到StringBuffer类的广泛使用。为什么 StringBuffer 类现在已经过时了,为什么 StringBuilder 应该优先于 StringBuffer,除了由于非同步而提高了性能?
在《有效的Java》一书中,Josh Bloch说:
StringBuffer在很大程度上已经过时了,应该被非同步的实现“StringBuilder”所取代。
.
但根据我的经验,我仍然看到StringBuffer类的广泛使用。为什么 StringBuffer 类现在已经过时了,为什么 StringBuilder 应该优先于 StringBuffer,除了由于非同步而提高了性能?
Java 1.5上的新代码通常应该使用它已经过时了 - 你真的需要以线程安全的方式构建字符串是非常罕见的,那么为什么要支付同步成本呢?StringBuilder
我怀疑你看到的使用的代码大多属于以下几类:StringBuffer
StringBuilder
StringBuilder
不是每个人都像你一样广泛阅读:-)
我只是半开玩笑。人们一直在复制代码和模式。许多人不会与 API 更改保持联系。
为什么 StringBuffer 已经过时了?因为在绝大多数情况下,不需要其同步行为。我想不出我曾经需要过它的时候。尽管同步现在不再是曾经的性能问题,但在不必要的情况下,缴纳这笔税款是没有意义的。