A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁世宇 黑马帝   /  2011-11-22 19:26  /  2153 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuffer和StringBuilder的区别?

5 个回复

倒序浏览
StringBuffer同步  另一个不同步,同步效率低,所以建议用另一个,需要同步时自己加锁。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
崔浩 黑马帝 2011-11-22 19:55:41
藤椅
StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点(不同步)

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
StringBuilder:线程非安全的
    StringBuffer:线程安全的
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
回复 使用道具 举报
本帖最后由 程立彬 于 2011-11-22 21:57 编辑

Java升级的原因有,提高效率,简化书写 、提高安全性。
StringBuilder是StringBuffer的升级版本,是为了提高效率,是JDK1.5以后出来的,他是不同步的,因此效率比较高。建议用StringBuilder,可通过线程同步方法实现线程的同步,这样也相当于有了同步性。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)

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

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马