黑马程序员技术交流社区

标题: String StringBuffer和StringBulder到底有什么区别,在什么时候用们?? [打印本页]

作者: Dej@vu    时间: 2013-8-4 10:59
标题: String StringBuffer和StringBulder到底有什么区别,在什么时候用们??
String StringBuffer和StringBulder到底有什么区别,总是混淆,在什么时候用们??

作者: 吴光新    时间: 2013-8-4 12:08
StringBuffer适合多线程使用,StringBulder适合单线程使用
作者: 蚂蚁搬家    时间: 2013-8-4 13:05
StringBuffer和StringBuilder内部方法基本一样,都是可以对字符串进行增删;
但,StringBuilder不考虑多线程同步,只适用于单线程的情况,正因为如此它的效率相对于StringBuffer要高;
StringBuffer考虑多线程同步,也因为此,它的效率相对来说比较低;
作者: 吕振中    时间: 2013-8-4 20:08
其实功能是一样的,根据实际情况着情使用,如果没有多线程最好使用StringBuilder。
作者: ☆今☆    时间: 2013-8-4 20:35
String 是固定长度的,一旦被初始化就不可以被改变.
StringBuffer是线程同步的,(多线程用StringBuffer)
StringBuilder是线程不同步.(单线程用StringBuilder),速度比较快.(建议开发使用)

作者: a767175432    时间: 2013-8-4 22:34
String是一个不可变对象,不允许修改String对象  例如 String str = "sdfwfwq";  str="sada"; 这种方式是又将“sada”这个对象给了str,“sdfwfwq”这个被释放掉了

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

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


作者: wang100753    时间: 2013-8-4 23:04
1.      两者在执行速度方面的比较:StringBuilder >  StringBuffer  

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

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


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

                        2.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

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




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