[AlehphSoul原创,转载请注明出处]
---------------------------------------------------- --------
我们有了StringBuffer,那为什么java里还有个StringBuilder呢?这个类是在java1.5里加进来的,1.4及以前的版本是没有的.那么StringBuilder到底有什么特别之处呢?
一、线程分析
在看这篇文章的时候应该有不少人不了解什么叫线程同步,这里做一个形象的比喻:有一个摸奖的箱子,这个箱子只有一个口,并且这个口只能放一只手进去,每次只能一个人摸,那么这个箱子就是线程同步的;反之,同样有一个摸奖的箱子,这个箱子有很多口,可以有很多手进去,那么这个箱子就不是线程同步的。
其实StringBuilder就是一个非线程安全的类,而StringBuffer是一个线程安全的类,这是它们的唯一区别,线程安全了,那么效率就会降低,线程不安全了,效率就会上升,因此,对于StringBuilder和StringBuffer,效率的高与低也是二者的重要区别。
二、使用策略
对于不要求线程安全的字符串加减操作,尽量使用StringBuilder,因为它效率高于StringBuffer.同理,对于要求线程安全的操作, StringBuffer是不二的选择。
PS:这一节很简单,这里结合前面两节对String,StringBuffer,StringBuilder的使用做一下简单的总结.
1、若字符串不做加减操作,使用String.
2、若字符串对线程安全有要求,使用StringBuffer.
3、若字符串对线程安全没有要求,并且追求效率,使用StringBuilder.