Stringbuffer、Stringbuilder啥时候用? [复制]

Posted

技术标签:

【中文标题】Stringbuffer、Stringbuilder啥时候用? [复制]【英文标题】:Stringbuffer,Stringbuilder when to use? [duplicate]Stringbuffer、Stringbuilder什么时候用? [复制] 【发布时间】:2012-10-09 07:13:23 【问题描述】:

可能重复:StringBuilder and StringBuffer in Java

StringBufferStringBuilder 之间选择的标准

【问题讨论】:

【参考方案1】:

StringBuilder 方法是不同步的,所以当您不关心多线程部分时,您可以使用它,因为它会很快。

另一方面,StringBuffer 的所有方法都是同步的,因此是线程安全的。

你可以浏览这个帖子:-Difference between StringBuilder and StringBuffer

【讨论】:

【参考方案2】:

如果您肯定使用 Java 5 或更高版本,并且您肯定不需要在线程之间共享对象(我不记得 曾经需要这样做),StringBuilder 是更好的选择。

基本上,您应该尽可能使用StringBuilder,以避免无意义的同步。诚然,大多数虚拟机处理无竞争同步的方式非常有效,但如果您一开始就不需要它...

【讨论】:

+1 恕我直言,如果你认为你需要在线程之间共享一个 StringBuffer,那么你有严重的设计问题。 你不认为使用 StringBuilder 会不必要地使用堆空间吗? @TheHunter:相比做什么?为什么你会期望 StringBuilder 使用比 StringBuffer 更多的堆空间? @JonSkeet 当您不需要在线程之间共享对象时(即当您的字符串没有被多个线程访问时),您不认为只使用 String 会更好吗选项比使用 StringBuilder?由于 StringBuilder 将其对象直接存储到堆空间中。 @JonSkeet 只是添加...String 会将其对象存储到字符串池中,从而节省整体堆空间。但是 StringBuilder 会不必要地使用堆空间。

以上是关于Stringbuffer、Stringbuilder啥时候用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

字符串拼接的五种方式

java从基础知识字符串处理

StringBuffer类

Java基础之StringBuffer类

java面试题: StringBuffer a=new StringBuffer("A"); StringBuffer b=new StringBuffer("B

十StringBuffer