0

晚上好,我在博客中阅读了这些声明,it's NOT safe to replace a StringBuffer object with a StringBuilder in java version earlier than 1.5 这似乎是事实,但没有明显的原因!!,我知道 StringBuffer 正在扩展类 java.lang.AbstractStringBuilder。StringBuilder 还扩展了 AbstractStringBuilder,因此它也继承了这些方法。所以从编译器的角度来看,您可以安全地将 StringBuffer 替换为 StringBuilder。当然 StringBuilder 是不同步的,所以如果你关心同步,你不能用字符串生成器替换字符串缓冲区,所以在我看来,同步是我们在用字符串生成器替换字符串缓冲区时唯一能想到的因素,但似乎还有另一个因素JAVA Version,但我不知道这些对决定有何影响,请与我讨论这些观点。

4

2 回答 2

3

请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

StringBuilder在 Java 1.5 之前不存在,因此早期的 Java 版本将无法使用它。

于 2013-04-05T22:03:14.910 回答
3

在 1.5 之前的 VM 中使用它不安全的原因是因为在 1.5StringBuilder之前不存在。如果您查看JavaDoc,StringBuilder您会发现它仅在 1.5 之后才退出。

关于何时在 1.5+ 中使用它,您只需替换StringBufferStringBuilder. 如果您有多个线程写入缓冲区,则您不想这样做。但是,在大多数情况下,例如,当您只想String从方法中创建并返回它时toString(),您应该是安全的。

于 2013-04-05T22:05:45.830 回答