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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 柏涛 中级黑马   /  2014-2-15 19:58  /  1508 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有同学详细解释下么

评分

参与人数 1黑马币 +2 收起 理由
zzkang0206 + 2

查看全部评分

7 个回复

倒序浏览
这个经常提到吧
前者是同步 效率稍慢  后者不同步效率快
前者因为同步 所以安全性高 后者则安全性较低
前者出现时间早 后者是1.5之后才出现的
虽然前者安全性高 但是一般不涉及到多线程的时候还是用后者 因为效率高!

评分

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

查看全部评分

回复 使用道具 举报
StringBuffer/StringBuilder区别:
------ StringBuffer:线程安全的,适合用于多线程中,但是性能低一点;
------ StringBuilder(java5): 线程不安全的,适合用于单线程中,性能高一点; 官方推荐使用的

评分

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

查看全部评分

回复 使用道具 举报
这个实际用起来基本没什么区别
StringBuffer:x线程安全,效率低
StringBuilder:线程不安全,效率高
我们java开发一般是单线程,所以最常用的 是 StringBuilder,

评分

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

查看全部评分

回复 使用道具 举报
这个是基础的 面试的时候 也有被问到过
StringBuffer:线程安全的 效率低 用的比较少 开发时不常用
StringBuilder:线程不安全但是效率高 开发是比较常用  是StringBufferd的升级版

评分

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

查看全部评分

回复 使用道具 举报
StringBuffer是线程安全的,有加锁开销,效率略低。StringBuilder非线程安全,不用加锁,效率更高。一般字符串相加不会有多线程操作,所以推荐使用StringBuilder。StringBuilder是jdk1.5之后引入的,之前只能使用StringBuffer。另外,事实上我们在java里写的字符串相加的操作被编译后都是通过new一个StringBuffer或StringBuilder对象来操作的,所以不会产生大量的String对象

评分

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

查看全部评分

回复 使用道具 举报
StringBuffer是字符串缓存区,它的内容可以被修改,长度也可以改变,StringBuffer类是线程安全的,也就是说多个线程可以安全的访问StringBuffer对象。StringBuilder与StringBuffer类似,都是字符串缓冲区,但StringBuilder不是线程安全的,如果你只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。值得注意的是StringBuilder是在JDK1.5版本中增加的。以前版本的JDK不能使用该类。

评分

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

查看全部评分

回复 使用道具 举报
楼上回答的都很全面
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马