Stringbuffer、Stringbuilder啥时候用? [复制]
Posted
技术标签:
【中文标题】Stringbuffer、Stringbuilder啥时候用? [复制]【英文标题】:Stringbuffer,Stringbuilder when to use? [duplicate]Stringbuffer、Stringbuilder什么时候用? [复制] 【发布时间】:2012-10-09 07:13:23 【问题描述】:可能重复:StringBuilder and StringBuffer in Java
在StringBuffer
和StringBuilder
之间选择的标准
【问题讨论】:
【参考方案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 a=new StringBuffer("A"); StringBuffer b=new StringBuffer("B