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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江峰渔火 中级黑马   /  2014-6-14 15:24  /  1068 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuffer和StringBuilder有什么区别,不同点是什么

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

7 个回复

倒序浏览
开发的时候用StringBuilder,它是新出来的 线程不同步
回复 使用道具 举报
http://www.jb51.net/article/31750.htm看这里,有详细介绍
回复 使用道具 举报
crazylong 发表于 2014-6-14 15:32
开发的时候用StringBuilder,它是新出来的 线程不同步

具体区别是什么
回复 使用道具 举报
①从值是否可变的角度讲。
String一旦定义后其值就不能改变,而StringBuffer相当于一个装字符串的可变容器,可以对装的内容进行增删改查等操作

②从效率的角度讲
StringBuffer的append方法比“+”高效。
字符串连接操作中StringBuffer的效率要比String高:
每次使用String的 "+",都是new了一个新的String 对象,
而StringBuffer 的append()方法,都是在原有的对象上进行的操作,
String str = new String("welcome to ");
str += "here";
的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后
再将StringBuffer toSting();
这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.
并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值.
这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.
因此,当需要对字符串进行多次修改时,最好用StringBuffer。

点评

赞一个  发表于 2014-6-14 15:50

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
StringBuilder是后JDK1.5后才出来的,两个方法基本相同,区别就是StingBuffer是同步的而StringBuilder是不同步的。将StingBuilder的实例用于多个线程是不安全的。如果需要同步就建议用StingBuffer。牛叉的话自己加锁也行。
回复 使用道具 举报
stringBuffer线程安全,适用于多线程  stringbuilder线程不安全,但效率高,适用于单线程
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马