黑马程序员技术交流社区

标题: StringBuffer和StringBuilder的区别 [打印本页]

作者: 袁世宇    时间: 2011-11-22 19:26
标题: StringBuffer和StringBuilder的区别
StringBuffer和StringBuilder的区别?
作者: 常文艺    时间: 2011-11-22 19:39
StringBuffer同步  另一个不同步,同步效率低,所以建议用另一个,需要同步时自己加锁。
作者: 崔浩    时间: 2011-11-22 19:55
StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点(不同步)
作者: 赵磊5    时间: 2011-11-22 21:06
StringBuilder:线程非安全的
    StringBuffer:线程安全的
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
作者: 程立彬    时间: 2011-11-22 21:57
本帖最后由 程立彬 于 2011-11-22 21:57 编辑

Java升级的原因有,提高效率,简化书写 、提高安全性。
StringBuilder是StringBuffer的升级版本,是为了提高效率,是JDK1.5以后出来的,他是不同步的,因此效率比较高。建议用StringBuilder,可通过线程同步方法实现线程的同步,这样也相当于有了同步性。
作者: zhou_411424    时间: 2011-11-23 06:57
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)

StringBuffer是线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
StringBuilder一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2