黑马程序员技术交流社区

标题: StringBuffer StringBuilder和容器都什么时候使用,我有点懵? [打印本页]

作者: 747437484    时间: 2013-12-24 14:59
标题: StringBuffer StringBuilder和容器都什么时候使用,我有点懵?
StringBuffer StringBuilder和容器都什么时候使用,我有点懵?

作者: 发哥-阿花    时间: 2013-12-24 15:07
就有一个不同而已——线程同步或不同步。

StringBuilder是后期出现的,线程不同步,新东西出现总有他的意义,那么它就是为了提高效率而出现的;

StringBuffer是线程同步,当你的程序中只有一个线程时,线程需要同步吗?明显不用!这时候使用StringBuilder会大大提高你的程序的运行效率。

当然StringBuilder作为替代StringBuffer的产物,他也可以用锁来解决线程同步安全问题。

对与我们现在来说,你使用哪个都一样,但是以后开发时建议使用新的,即StringBuilder。
作者: 恨死我了    时间: 2013-12-24 15:08
1、StringBuffer是线程安全的可变字符序列,可以安全的用于多个线程,而StringBuilder是非安全的可变字符序列,用于在单线程中使用,因为它的内部没有实现同步。除了这点不同外,基本用法都是相同的;
2、因为字符串缓冲区在单线程中使用比较普遍,所以还是用StringBuilder,它比StringBuffer要快。
3、一般在使用字符串连接,经常需要在字符串后面添加新的字符串的时候用到这两个对象。
比如:String s1 = "abc"+"bc"+"ad";
或者是一个循环不断往后面添加新的字符串时就可以用StringBuilder的append方法往原来的字符串后面添加内容,因为String是不可变的字符序列,用它来连接字符串的时候需要不停的创建新的对象再进行连接,使用StringBuilder或StringBuffer就会高效些。




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