A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

StringBuffer StringBuilder和容器都什么时候使用,我有点懵?

评分

参与人数 1黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

2 个回复

倒序浏览
就有一个不同而已——线程同步或不同步。

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

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

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

对与我们现在来说,你使用哪个都一样,但是以后开发时建议使用新的,即StringBuilder。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马