黑马程序员技术交流社区

标题: StringBuffer和StringBuilder的区别及各自用途? [打印本页]

作者: 邢勇    时间: 2011-9-27 09:57
标题: StringBuffer和StringBuilder的区别及各自用途?
StringBuffer 与 StringBuilder 这两个类功能差不多吧,那么他们的区别在哪里,具体都用在什么地方呢,如果在两者都可以用的情况下,用哪个比较好呢?
作者: 匿名    时间: 2011-9-27 10:00
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
作者: 盖保宁    时间: 2011-9-27 10:09
StringBuffer 与 StringBuilder 方法和功能一样,StringBuilder 是 JDK 1.5后来加上的,
StringBuffer 中的方法一般用 synchronized 修饰,因此是线程安全。

另外根据其他同学的资料,从 JDK 1.5 开始,带有字符串变量的连接操作(+),JVM 内部采用
StringBuilder 实现,而以前是StringBuffer 来实现。
作者: zhousaowen    时间: 2011-9-27 10:14
两者区别:StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。
就好比过马路,StringBuilder像是一个莽汉,不看是否有车。一直往前冲。但是在只有他一个人路上就安全,效率高。StringBuffer就是一个会看车的人,经常有其他的时间开销,效率就会降低,在有车的路上走就安全多也就是多线程的环境下。
具体的还要看使用的环境决定用哪个.
StringBuffer和StringBuilder类都表示内容可以被修改的字符串。查看文档,两者都提供了很多的操作方法。大致都一样。
[ 本帖最后由 zhousaowen 于 2011-09-27  10:15 编辑 ]
作者: 匿名    时间: 2011-9-27 13:53
StringBuilder和StringBuffer的功能是一样的,但是StringBuilder是线程不安全的且是不同步的,而StringBuffer是线程安全的且是同步的。当是单线程时建议使用StringBuilder,因为它是线程不同步的,所以就不用判断锁了,从而提高了效率,当是多线程时建议使用StringBuffer,因为这样可以保证安全。
作者: 匿名    时间: 2011-9-27 20:11
哦 如果程序中存在多线程安全的问题就要用StringBuffer呗,一般情况就用StringBuilder
作者: 匿名    时间: 2011-9-27 20:28
标题: stringbuffer和stringbuiled
其实StringBuffer和StringBuilder 二者差不多 ,没多大的差别
但有一点注意:StringBuilder 是线程不同步的 也就是说操作字符串的效率要高点
是线程同步的 效率低点  但是 我们平时用的最多的还是StringBuffer。
因为我们只有一个线程去操作字符串  但在一个方法中去操作字符串  通常都是StringBuffer




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