StringBuffer和StringBuilder之间的主要区别是什么?在决定其中任何一项时是否存在性能问题?


当前回答

由于StringBuffer是同步的,因此需要额外的工作,因此基于性能,它比StringBuilder慢一点。

其他回答

由于StringBuffer是同步的,因此需要额外的工作,因此基于性能,它比StringBuilder慢一点。

字符串是不可变的。

StringBuffer是一个可变的和同步的。

StringBuilder也是可变的,但不同步。

StringBuilder是在Java1.5中引入的,因此它不能与早期的JVM一起使用。

从Javadocs:

StringBuilder类提供了与StringBuffer兼容的API,但不能保证同步。该类被设计为在单个线程使用字符串缓冲区的地方(通常情况下)作为StringBuffer的替代品。在可能的情况下,建议优先使用该类而不是StringBuffer,因为在大多数实现中,它会更快。

StringBuilder不是线程安全的。字符串缓冲区是。更多信息请点击此处。

编辑:至于性能,在热点启动后,StringBuilder是赢家。然而,对于较小的迭代,性能差异可以忽略不计。

主要区别在于StringBuffer是同步的,而StringBuilder不是同步的。如果您需要使用多个线程,那么建议使用StringBuffer。但是,根据执行速度,StringBuilder比StringBuffer更快,因为它没有同步。