黑马程序员技术交流社区
标题:
String ,StringBuffer ,StringBuilder的区别
[打印本页]
作者:
明锦添
时间:
2013-3-18 23:08
标题:
String ,StringBuffer ,StringBuilder的区别
String ,StringBuffer ,StringBuilder的区别 ,它们是最终(final 修饰)类吗?
作者:
爪哇攻城狮
时间:
2013-3-18 23:18
String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都是String类的对象。字符串是常量;它们的值在创建之后不能改变。所以可以共享它们。
StringBuffer是字符串缓存区,它的内容可以被修改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问StringBuffer对象。
StringBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。
值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。
作者:
伍淑江
时间:
2013-3-18 23:21
本帖最后由 伍淑江 于 2013-3-18 23:23 编辑
String 类是final,引用内存中的值不可变。引用数据量一大效率就降低了;
StringBuffer速度慢,但线程安全性高;
StringBuilder 速度快,但是线程不安全。
效率和安全永远都是相对的,实际开发中看你是注重效率还是注重安全来决定是用StringBuffer还是用StringBuilder
作者:
朱盛文
时间:
2013-3-18 23:23
1.StringBuffer和Stringbuilder是可变的字符序列,容量随着元素的增加而增加。而String一旦赋值,内容就不能更改。
2.StringBuffer是线程安全的,效率低。
3.StringBuilder是线程不安全的,效率高。
作者:
黑马-李嘉欣
时间:
2013-3-18 23:43
JAVA中用于处理字符串常用的有三个类:java.lang.String、java.lang.StringBuffer、java.lang.StringBuilder,这三者的共同之处都是final类,不允许被继承,这主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着的,且考虑到防止其中的参数被修改影响到其它的应用。
StringBuffer与StringBuilder两个基本上差不多,只是StringBuffer是线程安全,可以不需要额外的同步用于多线程中;StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,但是速度就比StringBuffer快多了;二者之间的共同点都可以通过append、insert进行字符串的操作。
String实现了三个接口:Serializable、Comparable<String>、CharSequence,而StringBuffer及StringBuilder只实现了两个接口Serializable、CharSequence,相比之下String的实例可以通过compareTo方法进行比较,而其它两个就不可以。
作者:
HM赵磊
时间:
2013-3-18 23:47
一、String类,这个类没有被final关键字修饰,所以可以被继承。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享(来自API文档)。这个类有一个特性,字符串与任何类型的数据“+”相连接,那么他就变成了字符串,这个操作是通过StringBuilder或者StringBuffer类及其append方法实现的
二、StringBuffer类,这个类被final关键字修饰,不能够被继承。长度和内容建立后可以被修改。字符串缓冲区都有一定的容量,如果没有超过默认的容量,立即存储,如果超过默认容量,容量会自动增加。还有,她出现在JDK1.0,并且是线程同步的,所以效率略低。
三、StringBuilder类,这个类被final关键字修饰,不能够被继承。她提供一个与 StringBuffer 兼容的 API,StringBuilder的出现就是替代StringBuffer的。StringBuilder是出现在JDK1.5,她是线程不同步的,所以效率略高。 在开发中,优先考虑StringBuilder
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2