在“有效Java”一书中,乔希·布洛赫说
StringBuffer在很大程度上已经过时,应该由非同步实现“StringBuilder”代替。
。
但在我的经验中,我仍然看到了StringBuffer类的广泛使用。为什么StringBuffer类现在已经过时了,为什么StringBuilder应该比StringBuffer更好,除了由于不同步而提高性能之外?
发布于 2011-07-21 11:08:17
它已经过时,因为Java1.5上的新代码通常应该使用StringBuilder --非常罕见的是,您真的需要以线程安全的方式构建字符串,那么为什么要支付同步成本呢?
我怀疑使用StringBuffer的代码大多属于以下几个类别:
在Java1.5之前编写的StringBuilder
StringBuilder
的人编写的,由不知道StringBuilder的工具编写
发布于 2011-07-21 11:05:51
不是每个人都像你那样广泛地阅读:-)
我只是半开玩笑而已。人们一直在复制代码和模式。许多人不了解API的变化。
为什么StringBuffer过时了?因为在绝大多数情况下,它的同步行为并不是必需的。我想不出有什么时候我需要它了。尽管同步性已不再是以前的性能问题,但在没有必要的情况下缴纳这种税是没有意义的。
发布于 2011-07-21 11:10:43
为什么StringBuffer类现在过时了?
因为它的操作是同步的,这增加了开销,并且很少有用。
您仍然看到StringBuffer被广泛使用的原因仅仅是惯性:仍然有无数的代码示例教程从未被更新以使用StringBuilder,而且人们仍然从这些来源学习过时的实践(不仅仅是这个)。即使是知道得更好的人也常常会回到旧习惯。
https://stackoverflow.com/questions/6775016
复制相似问题