黑马程序员技术交流社区

标题: StringBuffer和StringBuilder的区别是什么? [打印本页]

作者: 闫常国    时间: 2013-5-11 19:14
标题: StringBuffer和StringBuilder的区别是什么?
本帖最后由 闫常国 于 2013-5-15 14:45 编辑

StringBuffer和StringBuilder的区别是什么?
作者: 壹旪傾峸    时间: 2013-5-11 19:26
区别  1.  在执行速度方面的比较:StringBuilder >  StringBuffer   
         2.  StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
      3.  StringBuilder:线程非安全的
        StringBuffer:线程安全的  希望对你有所帮助吧
   
作者: 黑马-雷钊    时间: 2013-5-11 19:29
刷分的?????、StringBuffer在多线程中可以同步,安全性高。但是速度稍慢。
StringBuilder速度稍快。但是在多线程中不能同步。安全性降低了。尽管这样。只要不涉及到重要数据。人们还是愿意使用StringBuilder
作者: 许大虾    时间: 2013-5-11 21:32
1.  在执行速度方面的比较:StringBuilder >  StringBuffer   
2.  StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
3.  StringBuilder:线程非安全的
  StringBuffer:线程安全的
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

对于三者使用的总结:1.如果要操作少量的数据用 = String
                    2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
                    3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
作者: 许庭洲    时间: 2013-5-11 22:10
1. String在进行运算时(如赋值,拼接等)会产生一个新的实例,StringBuilder则不会;
2. 在大量字符串拼接或频繁对某一字符串进行操作时最好使用StringBuilder,不要使用String.
作者: 王明明1004    时间: 2013-5-13 17:42
同意楼上 正解
作者: 淡蓝色    时间: 2013-5-14 13:31
楼主,请问C#中有StringBuffer吗,那是JAVA中的可变字符串啊,StringBuilder才是C#中的可变字符串啊,至于string和StringBuilder的区别3楼的正解
作者: 葛杨杨    时间: 2013-5-15 00:41
String 是字符串类 最常用于简单的字符串操作
StringBuffer 是字符串缓冲。 适用于复杂的字符串增删改操作。

作者: 盘晟    时间: 2013-5-15 00:51
String:是被final修饰的类,是不可变类,也就是说我们通常定义的String类型的变量的值是不可改变的
StringBuffer:是线程安全的可变的字符序列
StringBuilder:是非线程安全的可变的字符序列,它和StringBuffer基本上差不多吧,在不涉及多线程使用时用StringBuilder会更快些
总体来说就是:String不可变,StringBuffer和StringBuilder可变,线程同步时用StringBuffer,非同步用StringBuilder
以上是我的个人理解,希望对你有所帮助!




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