黑马程序员技术交流社区

标题: StringBuilder与StringBuffer的区别问题 [打印本页]

作者: て淡莣了陌生    时间: 2013-4-28 11:16
标题: StringBuilder与StringBuffer的区别问题
本帖最后由 て淡莣了陌生 于 2013-4-29 07:22 编辑

哪路大神能够解释一下StringBuilder与StringBuffer的区别啊,在文档里看着它们的方法都是一样的啊,用了一下也没看出什么区别,是不是这两个可以随意互换啊!!!
作者: 谭威    时间: 2013-4-28 11:34
StringBuilder线程不安全的。在单线程程序中效率比StringBuffer高,它支持所有Stringuffer相同的操作,但由于它不执行同步,所以速度更快,而StringBuffer是线程安全的,为什么StringBuffer是线程安全的:StringBuffer在jdk1.0出现,当时考虑会在多线程程序中使用,StringBuffer在添加时就不能删除,在删除时就不能添加,所以必须加上同步,但是加上同步后,在单线程程序中调用StringBuffer的方法时都会去判断同步的锁,所以效率会低,在jdk5.0后,为解决单线程使用StringBuffer效率低的问题,出现了StringBuilder,来提高运行效率。
作者: 孙胜    时间: 2013-4-28 12:22
简单的说你创建的字符串要用在多线程环境中就用StringBuffer,因为他是线程安全的
单线程就用StringBuilder,因为他速度快
作者: up.yfei    时间: 2013-4-28 12:36
在执行速度方面的比较:StringBuilder >  StringBuffer
StringBuilder:线程非安全的
StringBuffer:线程安全的

对于String、StringBuffer、StringBuilder三者使用的总结:
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
作者: 于海龙    时间: 2013-4-28 12:37
StringBuilder jdk1.5 之后出现的。较 StringBuffer 有 不同步,速度快的优点。使用方法类似。

建议参考 API  java.lang.StringBuilder

作者: 肖宇宥    时间: 2013-4-28 12:58
最大的区别就是,是否线程安全
StringBuilder是线程不安全的,所以运行效率高。
如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer




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