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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 浪无痕-陈文坤 中级黑马   /  2013-8-5 21:31  /  1514 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 浪无痕-陈文坤 于 2013-8-6 06:45 编辑

毕老师视频里关于StringBuilder跟StringBuffer:在升级三个因素:1.提高效率;2.简化书写;3.提高安全性;
   其中第三条是什么意思?StringBuilder不是线程不同步吗,对这提高安全性,不理解。谢谢!

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

9 个回复

倒序浏览
StringBuilder:
    用在字符串缓冲区被单个线程使用的时候,多线程线程非安全的 
StringBuffer:
    可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致,多线程是安全的   
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是因为StringBuilder速度快
    与楼主共同学习{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
一句话,StringBuffer和StringBuilder用法没有任何区别,StringBuilder是1.5才出现的,在单线程中,用StringBuilder,它效率高,多线程中用StringBuffer,它安全,是同步的。
回复 使用道具 举报
String是不可变的。也就是说只要用String定义了一个对象,当对他进行修改的时候,都是新建一个String,而不是在原有的基础上修改而成的。
StringBuffer可变。线程安全~所以效率比StringBuilder低一点。
StringBuilder可变字符串,可通过aappend等方法对字符串进行修改。线程不安全,是sun为了追求极致写的。效率比StringBuffer高。
回复 使用道具 举报
毕老师所说的三个要素是针对java中新功能对比老方法升级而言的好处:1.提高效率;2.简化书写;3.提高安全性;
StringBuilder虽然在多线程时线程不同步,不安全,但是其效率高啊,这也不是符合升级好处的第一条吗,提高效率.
回复 使用道具 举报
黑马李昂 发表于 2013-8-5 22:19
StringBuilder:
    用在字符串缓冲区被单个线程使用的时候,多线程线程非安全的 
StringBuffer:

谢谢了!!!
回复 使用道具 举报
王林涛 发表于 2013-8-6 00:44
毕老师所说的三个要素是针对java中新功能对比老方法升级而言的好处:1.提高效率;2.简化书写;3.提高安全性 ...

呵呵,谢了!!!
回复 使用道具 举报
wang100753 发表于 2013-8-5 23:20
String是不可变的。也就是说只要用String定义了一个对象,当对他进行修改的时候,都是新建一个String,而不 ...

谢谢,顶顶!!!
回复 使用道具 举报
哪颗最亮的星星 发表于 2013-8-5 22:30
一句话,StringBuffer和StringBuilder用法没有任何区别,StringBuilder是1.5才出现的,在单线程中,用Strin ...

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