黑马程序员技术交流社区

标题: StringBuilder与StringBufer的区别? [打印本页]

作者: 雪碧拌米饭    时间: 2014-4-23 08:56
标题: StringBuilder与StringBufer的区别?
本帖最后由 雪碧拌米饭 于 2014-4-28 13:51 编辑

问StringBuilderStringBufer的作用及区别?

作者: demown    时间: 2014-4-23 09:08
是  StringBuilder和StringBuffer吧楼主 如果是就看一下吧 这是日记总结你看看就知道了

StringBuffer:可改变的Unicode字符序列。
        允许并发操作,是线程安全的。
        String类在进行字符串连接时会显得效率很低,就是因为它所产生的对象的属性是不能够修改的,当连接字符串时也就只能创建新的对象。
        对于很多字符串连接时,应当使用StringBuffer类,使用这个类的对象来进行字符串连接时就不会有多余的中间对象生成,从而优化了效率。
        例:对于字符串连接String str = “A” + “B” + “C” + “D”;
        产生:“AB”、“ABC”、“ABCD”。
        在串池中产生的“AB”、“ABC”明显是多余对象,浪费空间。
        解决方案:
        String s = null;
        StringBuffer sb = new StringBuffer(“A”);
        sb.append(“B”);
        sb.append(“C”);
        sb.append(“D”);
        s = sb.toString();
        StringBulder:可改变的Unicode字符序列。
        操作同StringBuffer,只是不支持并发操作,非线程安全的。

其实就是很简单StringBuffer非线程安全,也就是说效率相对高,在单线程的时候使用
StringBulder线程安全的 效率低 在多线程时候使用比较安全.
作者: 老貓钓鱼    时间: 2014-4-23 09:10
大的区别没有,唯一的区别就是一个是线程同步(StringBufer),一个是不同步(StringBuilder)
作者: 雪碧拌米饭    时间: 2014-4-23 09:18
demown 发表于 2014-4-23 09:08
是  StringBuilder和StringBuffer吧楼主 如果是就看一下吧 这是日记总结你看看就知道了

StringBuffer:可 ...

明白了!感谢!
作者: 阿旺    时间: 2014-4-23 09:22
1.在执行速度方面的比较:StringBuilder >  StringBuffer   

2.StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。

3.StringBuilder:线程非安全的
  StringBuffer:线程安全的
使用注意:
单线程操作字符串缓冲区 下操作大量数据  StringBuilder
多线程操作字符串缓冲区 下操作大量数据  StringBuffer

作者: 嘴角上揚ぃ读不    时间: 2014-4-23 11:05
StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象它只能通过构造函数来建立
作者: 嘴角上揚ぃ读不    时间: 2014-4-23 11:26
stringBuilder很不错的,完全可以替代string,最主要的是它的效率高StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象它只能通过构造函数来建立
作者: 東少    时间: 2014-4-23 13:53
两者在功能上都完全一样 只是StringBuilder是线程不安全的 StringBuffer是线程安全的
StringBuilder性能比StringBuffer高
在单线程应用中推荐使用StringBuilder, StringBuffer使用于多线程环境中
作者: 秦久启    时间: 2014-4-23 14:02
JDK1.5 版本之后出现了StringBuilder.替代了之前的StringBuffer主要是为了提高效率
StringBuffer是线程同步。 多线程建议使用。如果线程有的在添加数据,有的在修改数据,建议使用StringBuffer
StringBuilder是线程不同步。 单线程建议使用。如果使用StringBuffer的话,要频繁判断锁,所以效率低。

以后开发,建议使用StringBuilder







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