StringBuffer与StringBuilder的区别


二者区别,简而言之,在于StringBuffer内部实现了线程同步,而StringBuilder没有。

二者均继承自AbstractStringBuilder。

StringBuffer与StringBuilder的区别_第1张图片


JDK源码中可以看得更清楚些。

StringBuffer与StringBuilder的区别_第2张图片

=============================

StringBuffer与StringBuilder的区别_第3张图片


从源码中可以看出,子类AbstractStringBuilder已经实现了所有的操作,StringBuffer和StringBuilder均是简单地作为一个wrapper,在每个方法中调用了父类的方法。

区别在于,StringBuffer的每个方法都加上了synchronized,而StringBuilder没有。


因此,StringBuilder相对来说,速度较快一些。


对于大部分的代码应用中,一般不会出现被多线程共享的StringBXXXXX对象,因此使用StringBuilder即可。尽在出现被多线程共享时,才需要使用StringBuffer。






你可能感兴趣的:(Java)