首页新闻找找看学习计划

用StringBuffer还是StringBuilder?

0
悬赏园豆:100 [已关闭问题] 关闭于 2012-12-15 22:53

环境:java;Service类中有些方法、Util类中有些方法要进行字符串拼接,而且频率比较高;不考虑String;有些Util类中的方法会被多线程的方法用到,但是很少。

我经过测试,一行StringBuilder.toString()也就是比一行StringBuffer.toString()快1、2毫秒,那么有必要使用StringBuilder吗?全部用StringBuffer不就行了吗?还能保持良好的习惯,不需要花时间思考这个方法会不会被多线程的地方用到。

问题补充:

线程安全的答案,这个我都知道。源代码我也看过。我想问的是:多线程用到很少甚至没有用到的情况下,StringBuilder对于性能提升(主要是使用字符串拼接然后toString)很小,使用StringBuilder还有意义吗?

m.z的主页 m.z | 初学一级 | 园豆:107
提问于:2012-12-06 10:46
< >
分享
所有回答(5)
0

这是个值得弄明白的问题。

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-12-06 10:50
0

StringBuffer 字符串变量(线程安全)需要去控制线程的开销
StringBuilder 字符串变量(非线程安全)这个完全要你自己去控制,所以性能方面会稍微高点,但是带来的麻烦也多

结合使用场景确定用哪一个

az235 | 园豆:8263 (大侠五级) | 2012-12-06 10:59

线程安全的类不管你有没有用到多线程,这个类始终都需要考虑线程安全的,所以开销就一直存在,就好比,你买了宝马,不能因为你的宝马是二手的而没有安全气囊

支持(1) 反对(0) az235 | 园豆:8263 (大侠五级) | 2012-12-07 09:43
0

string.Format()用的就是StringBuilder

dudu | 园豆:39136 (高人七级) | 2012-12-06 11:10

你是建议我用String拼接?

支持(0) 反对(0) m.z | 园豆:107 (初学一级) | 2012-12-06 11:39

@m.z: 汗,你这里是指Java吧,我以为是C#

支持(0) 反对(0) dudu | 园豆:39136 (高人七级) | 2012-12-06 12:10

@dudu: 恩,是的

支持(0) 反对(0) m.z | 园豆:107 (初学一级) | 2012-12-06 12:47
0

线程安全和线程不安全的区别。

````` | 园豆:14268 (专家六级) | 2012-12-06 12:43
0

如果不涉及到多线程,我想StringBuilder 应该比较的好

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-06 14:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册