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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁园 中级黑马   /  2012-11-25 11:26  /  1954 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuilder和StringBuffer的用法有什么区别啊?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
JDK1.5版本之后出现了StringBuilder。
StringBuffer是线程同步。
StringBuilder是线程不同步。
以后开发,建议使用StringBuilder
StringBuilder可提高效率
将StringBuilder的实例用于多个线程是不安全的。如果需要这样同步,则建议使用StringBuffer。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
StringBuilder类是JDK 5.0引入的新的类, 实质上,就是线程安不安全的问题,StringBuffer是一个线程安全的StringBuilder,如果只在同一个线程内对字符串进行操作, StringBuilder会更快一些,如果是使用多线程进行操作,需要使用StringBuffer.
StringBuilder是非线程安全的,StringBuffer是线程安全的。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
StringBuffer线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改.StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据.StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列.
StringBuffer是可变对象,StringBuilder和StringBuffer的区别是StringBuffer中所有的方法都是同步的,是线程安全的,但速度慢,StringBuilder的速度快,但不是线程安全的.

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王舒玮 于 2012-11-25 22:20 编辑

StringBuffer是JDK1.0就存在的老类了,它是线程安全的,但效率不高;
StringBuilder是JDK1.5才添加进来的新类,它不是线程安全的,但效率要高。
StringBuffer:等待使用的String存放在StringBuffer中,我们有一个字符串,需要加工,然后再去使用,把字符串放到缓冲区中,然后加工,最后从缓冲区中取出字符串。
StringBuilder:在JDK5.0之后,编译器会对字符串的连接进行优化,例如:s1 = s1 + “b”;这时编译器会使用StringBuilder类来优化程序。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马