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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String StringBuffer和StringBulder到底有什么区别,总是混淆,在什么时候用们??

评分

参与人数 1黑马币 +3 收起 理由
神之梦 + 3 这个视频中有讲哦

查看全部评分

7 个回复

倒序浏览
StringBuffer适合多线程使用,StringBulder适合单线程使用

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
StringBuffer和StringBuilder内部方法基本一样,都是可以对字符串进行增删;
但,StringBuilder不考虑多线程同步,只适用于单线程的情况,正因为如此它的效率相对于StringBuffer要高;
StringBuffer考虑多线程同步,也因为此,它的效率相对来说比较低;

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
其实功能是一样的,根据实际情况着情使用,如果没有多线程最好使用StringBuilder。
回复 使用道具 举报
String 是固定长度的,一旦被初始化就不可以被改变.
StringBuffer是线程同步的,(多线程用StringBuffer)
StringBuilder是线程不同步.(单线程用StringBuilder),速度比较快.(建议开发使用)
回复 使用道具 举报
String是一个不可变对象,不允许修改String对象  例如 String str = "sdfwfwq";  str="sada"; 这种方式是又将“sada”这个对象给了str,“sdfwfwq”这个被释放掉了

StringBuffer和StringBuilde这两种类是一个字符串缓冲区,可以在字符串后面续写。

但是第一种是线程安全的 在多线程下使用第一种
第二种不是线程安全的,在单线程下使用

回复 使用道具 举报
1.      两者在执行速度方面的比较:StringBuilder >  StringBuffer  

2.      StringBuffer:字符创变量     
         StringBuilder:字符创变量

3.       StringBuilder与 StringBuffer
                  StringBuilder:线程非安全的
                  StringBuffer:线程安全的
当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。


对于两者使用的总结:
                                                 1.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

                        2.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
回复 使用道具 举报
String  是最常用的,它是一个字符串,值在创建之后不能更改。
StringBuffer 是一个可变的字符序列,是一个缓冲区,其长度和内容可以通过方法改变。
它是同步的,所以多线程时是安全的。
StringBuilder 也是一个可变的字符序列,它是最新的(1.5才出的),
而StringBuffer和String都是以前版本就有的。它是不同步的,所以效率高一点。但用
于多线程就不安全。
区别:
1,当多次要改变字符串的内容时,不要用String,因为它的效率最低。
2,对于StringBuffer和StringBuilder来说,优先使用StringBuilder。
3,如果用于多线程中操作,要选用StringBuffer,它安全。
所以说,安全和效率两者是反比例的,要追求高效率安全性就差一些,安全性高则效率低,
这就需要情况而定了。看你更追求的是效率,还是安全,具体上需要综合考虑。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马