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

可能重复:
StringBuilder and StringBuffer in Java

StringBufferStringBuilder 之间选择的标准

【问题讨论】:

    标签: java stringbuilder stringbuffer


    【解决方案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 会不必要地使用堆空间。
      猜你喜欢
      • 2017-07-18
      • 2011-02-24
      • 2023-04-04
      • 2014-08-25
      • 2012-10-16
      • 2020-07-05
      • 2015-12-13
      • 1970-01-01
      • 2014-08-26
      相关资源
      最近更新 更多