黑马程序员技术交流社区

标题: string [打印本页]

作者: 凝聚    时间: 2013-10-22 09:53
标题: string
本帖最后由 凝聚 于 2013-10-22 17:15 编辑

JAVA中StringBuffer与StringBuilder的区别

作者: wenbaoxing    时间: 2013-10-22 10:20
本帖最后由 wenbaoxing 于 2013-10-22 10:21 编辑

String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都是String类的对象。字符串是常量;它们的值在创建之后不能改变。所以可以共享它们。
String类,这个类被final关键字修饰,所以不可以被继承。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享(来自API文档)。这个类有一个特性,字符串与任何类型的数据“+”相连接,那么他就变成了字符串,这个操作是通过StringBuilder或者StringBuffer类及其append方法实现的


StringBuffer是字符串缓存区,它的内容可以被修改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问StringBuffer对象。
StringBuffer类,这个类被final关键字修饰,不能够被继承。长度和内容建立后可以被修改。字符串缓冲区都有一定的容量,如果没有超过默认的容量,立即存储,如果超过默认容量,容量会自动增加。还有,她出现在JDK1.0,并且是线程同步的,所以效率略低。


StringBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。
StringBuilder类,这个类被final关键字修饰,不能够被继承。她提供一个与 StringBuffer 兼容的 API,StringBuilder的出现就是替代StringBuffer的。StringBuilder是出现在JDK1.5,她是线程不同步的,所以效率略高。  在开发中,优先考虑StringBuilder

值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。

作者: yanglfree    时间: 2013-10-22 11:57
StringBuffer是线程同步。
StringBuilder是线程不同步。

JDK1.5 版本之后出现了StringBuilder.

作者: 李江    时间: 2013-10-22 12:14
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2