黑马程序员技术交流社区

标题: stringbuffer和stringbuilder区别是啥啊? [打印本页]

作者: 柏涛    时间: 2014-2-15 19:58
标题: stringbuffer和stringbuilder区别是啥啊?
有同学详细解释下么
作者: kira    时间: 2014-2-15 20:02
这个经常提到吧
前者是同步 效率稍慢  后者不同步效率快
前者因为同步 所以安全性高 后者则安全性较低
前者出现时间早 后者是1.5之后才出现的
虽然前者安全性高 但是一般不涉及到多线程的时候还是用后者 因为效率高!
作者: 廉伟杰    时间: 2014-2-15 20:13
StringBuffer/StringBuilder区别:
------ StringBuffer:线程安全的,适合用于多线程中,但是性能低一点;
------ StringBuilder(java5): 线程不安全的,适合用于单线程中,性能高一点; 官方推荐使用的

作者: tf996268809    时间: 2014-2-15 21:00
这个实际用起来基本没什么区别
StringBuffer:x线程安全,效率低
StringBuilder:线程不安全,效率高
我们java开发一般是单线程,所以最常用的 是 StringBuilder,
作者: 云行水边    时间: 2014-2-15 21:42
这个是基础的 面试的时候 也有被问到过
StringBuffer:线程安全的 效率低 用的比较少 开发时不常用
StringBuilder:线程不安全但是效率高 开发是比较常用  是StringBufferd的升级版
作者: why168    时间: 2014-2-15 22:43
StringBuffer是线程安全的,有加锁开销,效率略低。StringBuilder非线程安全,不用加锁,效率更高。一般字符串相加不会有多线程操作,所以推荐使用StringBuilder。StringBuilder是jdk1.5之后引入的,之前只能使用StringBuffer。另外,事实上我们在java里写的字符串相加的操作被编译后都是通过new一个StringBuffer或StringBuilder对象来操作的,所以不会产生大量的String对象
作者: 袁劲松    时间: 2014-2-16 09:25
StringBuffer是字符串缓存区,它的内容可以被修改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问StringBuffer对象。StringBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。
作者: chenfc8578    时间: 2014-2-16 23:08
楼上回答的都很全面




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