黑马程序员技术交流社区

标题: 关于StringBuilder [打印本页]

作者: 浪无痕-陈文坤    时间: 2013-8-5 21:31
标题: 关于StringBuilder
本帖最后由 浪无痕-陈文坤 于 2013-8-6 06:45 编辑

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

作者: 黑马李昂    时间: 2013-8-5 22:19
StringBuilder:
    用在字符串缓冲区被单个线程使用的时候,多线程线程非安全的 
StringBuffer:
    可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致,多线程是安全的   
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是因为StringBuilder速度快
    与楼主共同学习{:soso_e100:}
作者: 哪颗最亮的星星    时间: 2013-8-5 22:30
一句话,StringBuffer和StringBuilder用法没有任何区别,StringBuilder是1.5才出现的,在单线程中,用StringBuilder,它效率高,多线程中用StringBuffer,它安全,是同步的。
作者: wang100753    时间: 2013-8-5 23:20
String是不可变的。也就是说只要用String定义了一个对象,当对他进行修改的时候,都是新建一个String,而不是在原有的基础上修改而成的。
StringBuffer可变。线程安全~所以效率比StringBuilder低一点。
StringBuilder可变字符串,可通过aappend等方法对字符串进行修改。线程不安全,是sun为了追求极致写的。效率比StringBuffer高。
作者: 王林涛    时间: 2013-8-6 00:44
毕老师所说的三个要素是针对java中新功能对比老方法升级而言的好处:1.提高效率;2.简化书写;3.提高安全性;
StringBuilder虽然在多线程时线程不同步,不安全,但是其效率高啊,这也不是符合升级好处的第一条吗,提高效率.
作者: 浪无痕-陈文坤    时间: 2013-8-6 06:42
黑马李昂 发表于 2013-8-5 22:19
StringBuilder:
    用在字符串缓冲区被单个线程使用的时候,多线程线程非安全的 
StringBuffer:

谢谢了!!!
作者: 浪无痕-陈文坤    时间: 2013-8-6 06:43
王林涛 发表于 2013-8-6 00:44
毕老师所说的三个要素是针对java中新功能对比老方法升级而言的好处:1.提高效率;2.简化书写;3.提高安全性 ...

呵呵,谢了!!!
作者: 浪无痕-陈文坤    时间: 2013-8-6 06:44
wang100753 发表于 2013-8-5 23:20
String是不可变的。也就是说只要用String定义了一个对象,当对他进行修改的时候,都是新建一个String,而不 ...

谢谢,顶顶!!!
作者: 浪无痕-陈文坤    时间: 2013-8-6 06:45
哪颗最亮的星星 发表于 2013-8-5 22:30
一句话,StringBuffer和StringBuilder用法没有任何区别,StringBuilder是1.5才出现的,在单线程中,用Strin ...

谢谢!!!




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