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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫常国 中级黑马   /  2013-5-11 19:14  /  1800 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闫常国 于 2013-5-15 14:45 编辑

StringBuffer和StringBuilder的区别是什么?

9 个回复

倒序浏览
区别  1.  在执行速度方面的比较:StringBuilder >  StringBuffer   
         2.  StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
      3.  StringBuilder:线程非安全的
        StringBuffer:线程安全的  希望对你有所帮助吧
   

评分

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

查看全部评分

回复 使用道具 举报
刷分的?????、StringBuffer在多线程中可以同步,安全性高。但是速度稍慢。
StringBuilder速度稍快。但是在多线程中不能同步。安全性降低了。尽管这样。只要不涉及到重要数据。人们还是愿意使用StringBuilder
回复 使用道具 举报
1.  在执行速度方面的比较:StringBuilder >  StringBuffer   
2.  StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。
3.  StringBuilder:线程非安全的
  StringBuffer:线程安全的
    当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

对于三者使用的总结:1.如果要操作少量的数据用 = String
                    2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
                    3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

评分

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

查看全部评分

回复 使用道具 举报
1. String在进行运算时(如赋值,拼接等)会产生一个新的实例,StringBuilder则不会;
2. 在大量字符串拼接或频繁对某一字符串进行操作时最好使用StringBuilder,不要使用String.
回复 使用道具 举报
同意楼上 正解
回复 使用道具 举报
楼主,请问C#中有StringBuffer吗,那是JAVA中的可变字符串啊,StringBuilder才是C#中的可变字符串啊,至于string和StringBuilder的区别3楼的正解
回复 使用道具 举报
String 是字符串类 最常用于简单的字符串操作
StringBuffer 是字符串缓冲。 适用于复杂的字符串增删改操作。
回复 使用道具 举报
盘晟 中级黑马 2013-5-15 00:51:00
9#
String:是被final修饰的类,是不可变类,也就是说我们通常定义的String类型的变量的值是不可改变的
StringBuffer:是线程安全的可变的字符序列
StringBuilder:是非线程安全的可变的字符序列,它和StringBuffer基本上差不多吧,在不涉及多线程使用时用StringBuilder会更快些
总体来说就是:String不可变,StringBuffer和StringBuilder可变,线程同步时用StringBuffer,非同步用StringBuilder
以上是我的个人理解,希望对你有所帮助!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马