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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© awkflf11 中级黑马   /  2014-3-22 00:55  /  1567 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自己在看毕老师的java视频,,看到一个问题:
JDK1.5出现一个StringBuilder,StringBuffer和StringBuilder。
然后他说到他们的区别?
区别是StringBuffer是同步的,StringBuilder是非同步的
但他又说到:我们以后开发经常会用到StringBuilder,而不是StringBuffer>>.
请问这是为什么??


我只知道既然StringBuilder是同步的,那他应该安全啊、、在开发中为了安全,,怎么不常用那???不解,,

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

6 个回复

倒序浏览
因为StringBuilder比StringBuffer的效率高,单线程用StringBuilder,多线程用StringBuffer,在开发中效率是最重要的,加不加锁的不重要,如果需要这样的同步,建议用StringBuffer

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
总的来说是效率问题:StringBuilde被设计用作 StringBuffer 的一个简易替换,因为在字符串缓冲区被单个线程使用(这种情况很普遍)。应为是单个线程就不需要考虑线程安全问题所以使用StringBuilde。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
安全也牺牲了效率,所以说StringBuilder效率更高,更常用。
对于同步问题,完全可以用Collections中的方法辅助实现

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报 1 0
其实,StringBuffer和StringBuilder作用差不多,可是如果我们的程序是在单线程下运行,或者是不必考虑到线程同步问题,我们应该优先使用StringBuilder类;当然,如果要保证线程安全,即考虑到线程同步的时候,自然非StringBuffer莫属了。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报 1 0
StringButter效率低,同步可以自己写,这样即保证了安全,又有了效率
回复 使用道具 举报
tcny 中级黑马 2014-3-25 21:48:05
7#
毕老师的意思是,单线程时用StringBuilder,多线程时用StringBuffer,但是多线程时,我们依然可以用StringBuilder,因为我们可以自己实现锁的机制。  另外我想说的是,安全与效率往往是互相矛盾的,在实际开发中要根据实际的需求来选择效率还是安全优先。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马