首页 > 试题广场 >

StringBuffer和StringBuilder有什么区

[问答题]
请你谈谈StringBuffer和StringBuilder有什么区别,底层实现上呢?
stringBuiffer线程是安全的,而stringBuilder线程非安全, 两者都继承了AbstractBuilder
编辑于 2019-04-27 19:17:06 回复(0)
更多回答
string的值不可变,每次对string操作都会产生一个新的对象 而stringbuffer和stringbuilder类的对象能够多次被改变而不产生新的对象。stringbuilder是线程不安全的,所以它比stringbuffer快,但是如果要求线程安全的情况下,还是选择stringbuffer,
编辑于 2019-02-20 14:47:24 回复(0)
三者都可以实现对字符串的拼接操作,但是String的拼接是每次拼接都会去将原来的字符串和新字符串合并创建一个新的对象,创建的对象并不可变,StringBuilder和StringBuffer都是创建一个可变的动态对象,字符串的拼接中不需要创建新的对象,所谓的可变就是内部是一个实现动态扩容的char[],他们之间关系类似于数组和ArrayList,所以在效率String是远低于StringBuilder和StringBuffer的,StringBuilder和StringBuffer的区别在于线程安全,StringBuffer出现早,线程安全,适合并发场景中使用,StringBuilder出现晚于StringBuffer,非线程安全,效率更高适合单线程场景,日常开发大多时候为单线程场景,所以使用StringBuilder更多一些,但是很多不理解多线程场景的人为保险起见都会使用StringBuffer
发表于 2019-12-26 14:07:28 回复(0)
以下是我整理的区别,有什么错误的或者不懂的地方欢迎指出

编辑于 2019-10-21 21:32:46 回复(2)
StringBuffer比起StringBuild在实现上加上了Synchronized,保证线程安全也因此效率会低一些。在不会出现线程安全的地方我们就可以使用Stringbuild
发表于 2021-06-07 15:59:32 回复(0)
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)
发表于 2019-05-10 23:04:45 回复(0)
1 在执行速度方面的比较 StringBuilder > StringBuffer 2 StringBuffer与StringBuilder 他们是字符串变量 是可改变的对象 每当我们用它们对字符串做操作时 实际上是在一个对象上操作的 不像String一样创建一些对象进行操作 所以速度就快了 3 StringBuilder 线程非安全 StringBuffer线程安全的 当我们在字符串缓冲去被多个线程使用是 JVM不能保证StringBuilder的操作是安全的 虽然他的速度最快 但是可以保证StringBuffer是可以正确操作的 当然大多数情况下就是我们是在单线程下进行的操作 所以大多数情况下是建议用StringBuilder而不用StringBuffer的 就是速度的原因 对于三者使用的总结: 1 如果要操作少量的数据用 = String 2 单线程操作字符串缓冲区 下操作大量数据 = StringBuilder 3 多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
发表于 2019-04-28 22:40:12 回复(0)
stringBuffer线程是安全的,而stringBuilder线程是不安全的
发表于 2019-04-28 17:59:21 回复(0)
StringBuffer 线程安全的;StringBuilder 线程非安全的。
发表于 2019-04-27 16:55:34 回复(0)
stringbuffer是线程安全的 stringbuilder是非线程安全的 底层实现上的话,StringBuffer其实就是比StringBuilder多了Synchronized修饰符。
编辑于 2019-04-27 13:26:33 回复(0)
stringbuffer和stringbuilder类的对象能够多次被改变而不产生新的对象。stringbuilder是线程不安全
发表于 2019-04-26 22:52:24 回复(0)
前者出现的早,会做安全性检查,既有synchronized修饰,但操作字符串效率低,后者刚好和她相反
发表于 2019-02-02 17:11:45 回复(0)