黑马程序员技术交流社区
标题: StringBuffer与StringBuilder区别? [打印本页]
作者: 雷云红 时间: 2012-5-8 20:25
标题: StringBuffer与StringBuilder区别?
1,他们都可以动态的往字符串上添加内容。
2,在多线程的情况下StringBuffer.单线程中StringBuilder效率要高些。
作者: 金肖 时间: 2012-5-8 20:27
Jdk1.5以后出现功能
StirngBuffer :是线程同步的,通常用于多线程
StringBuidlder:线程不同步,通常用于单线程,提高了效率
作者: 张小锋 时间: 2012-5-8 21:19
本帖最后由 张小锋 于 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方法
作者: 周素强 时间: 2012-5-8 21:22
StringBuffer类 是字符串缓冲区,它是一个容器。
特点:长度可改变;可以字节操作多个数据类型;最终会通过toString()方法变成字符串。
StringBuilder类在1.5版本以后出现的,与StringBuffer类似。
不同点:StringBuffer是线程同步的;StringBuilder是线程不同步的。
将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer。
作者: 彩虹 时间: 2012-5-9 10:19
StringBuffer:线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。用于多个线程。可以在必要时对这些方法进行同步。
StringBuilder:一个可变的字符序列。提供一个与 StringBuffer 兼容的 API,但不保证同步。是 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。它比 StringBuffer实现 要快,执行效率更高。
作者: 廖理 时间: 2012-5-9 12:52
StringBuffer和StringBuilder类都表示内容可以被修改的字符串,StringBuilder是线程不安全的,运行效率高,
如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。
如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |