环境:java;Service类中有些方法、Util类中有些方法要进行字符串拼接,而且频率比较高;不考虑String;有些Util类中的方法会被多线程的方法用到,但是很少。
我经过测试,一行StringBuilder.toString()也就是比一行StringBuffer.toString()快1、2毫秒,那么有必要使用StringBuilder吗?全部用StringBuffer不就行了吗?还能保持良好的习惯,不需要花时间思考这个方法会不会被多线程的地方用到。
线程安全的答案,这个我都知道。源代码我也看过。我想问的是:多线程用到很少甚至没有用到的情况下,StringBuilder对于性能提升(主要是使用字符串拼接然后toString)很小,使用StringBuilder还有意义吗?
这是个值得弄明白的问题。
StringBuffer 字符串变量(线程安全)需要去控制线程的开销
StringBuilder 字符串变量(非线程安全)这个完全要你自己去控制,所以性能方面会稍微高点,但是带来的麻烦也多
结合使用场景确定用哪一个
线程安全的类不管你有没有用到多线程,这个类始终都需要考虑线程安全的,所以开销就一直存在,就好比,你买了宝马,不能因为你的宝马是二手的而没有安全气囊
string.Format()用的就是StringBuilder
你是建议我用String拼接?
@m.z: 汗,你这里是指Java吧,我以为是C#
@dudu: 恩,是的
如果不涉及到多线程,我想StringBuilder 应该比较的好