在Effective Java"一书中,Josh Bloch 说
In the book "Effective Java", Josh Bloch says that
StringBuffer 在很大程度上已经过时,应该由非同步实现 'StringBuilder'
StringBuffer is largely obsolete and should be replaced by the non-synchronized implementation 'StringBuilder'
.
但根据我的经验,我仍然看到 StringBuffer 类的广泛使用.为什么 StringBuffer 类现在已经过时了,为什么 StringBuilder 应该优于 StringBuffer 除了由于非同步而提高性能?
But in my experience, I've still seen widespread use of the StringBuffer class. Why is the StringBuffer class now obsolete and why should StringBuilder be preferred over StringBuffer except for the increased performance due to non-synchronization?
推荐答案Java 1.5 上的新代码 已经过时了,通常应该使用 StringBuilder - 它非常 很少有人真的需要以线程安全的方式构建字符串,那么为什么要支付同步成本呢?
It's obsolete in that new code on Java 1.5 should generally use StringBuilder - it's very rare that you really need to build strings in a thread-safe manner, so why pay the synchronization cost?
我怀疑您看到的使用 StringBuffer 的代码大多属于以下几类:
I suspect code that you see using StringBuffer mostly falls into buckets of:
- 在 Java 1.5 之前编写
- 编写以保持与旧版 JDK 的兼容性
- 由不了解 StringBuilder 的人撰写
- 由不了解 StringBuilder 的工具自动生成
- Written before Java 1.5
- Written to maintain compatibility with older JDKs
- Written by people who don't know about StringBuilder
- Autogenerated by tools which don't know about StringBuilder
更多推荐
StringBuffer 已过时?
发布评论