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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雷云红 初级黑马   /  2012-5-8 20:25  /  2046 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1,他们都可以动态的往字符串上添加内容。
2,在多线程的情况下StringBuffer.单线程中StringBuilder效率要高些。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
Jdk1.5以后出现功能
StirngBuffer :是线程同步的,通常用于多线程
StringBuidlder:线程不同步,通常用于单线程,提高了效率

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张小锋 于 2012-5-9 00:18 编辑

StringBuffer线程同步        提供的public方法基本上都是synchronized的。JDK1.0开始就存在
而StringBuilder不同步,效率提高  JDK1.5新引个类
相同父类: AbstractStringBuilder
相同接口: java.io.Serializable, CharSequence
他们基本上对外提供相同的方法
两个类都直接继承自Object,并且没有重写equals方法。
StringBuffer sb=new StringBuffer("java");
  StringBuffer sb2=new StringBuffer("java");
  System.out.println(sb.equals(sb2));
打印:false
所以使用StringBuffer,StringBuilder要比较字符串的值时,一般都要重写equals方法

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
StringBuffer类 是字符串缓冲区,它是一个容器。
特点:长度可改变;可以字节操作多个数据类型;最终会通过toString()方法变成字符串。
StringBuilder类在1.5版本以后出现的,与StringBuffer类似。
不同点:StringBuffer是线程同步的;StringBuilder是线程不同步的。
将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
   StringBuffer:线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。用于多个线程。可以在必要时对这些方法进行同步。
   StringBuilder:一个可变的字符序列。提供一个与 StringBuffer 兼容的 API,但不保证同步。是 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。它比 StringBuffer实现 要快,执行效率更高。
回复 使用道具 举报
   StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,
如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。
如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马