从JDK源代码能够看出,StringBuffer和StringBuilder都是继承自AbstractStringBuilder,事实上这两个类的功能实现都是在AbstractStringBuilder实现的。两个子类仅仅是简单地调用了一下super的方法。
区别在于StringBuffer的每一个方法都加了synchronized修饰符。而StringBuilder没有,因此StringBuffer是线程安全的。而StringBuilder不是。
注:普通情况下。似乎没实用到多线程共享字符串连接的情况,所以通常能够单纯的使用StringBuilder。毕竟synchronized还是略微有点时间开销的。
另一点:StringBuffer是JDK 1.0就加入的,StringBuilder是JDK 1.5才加入的。在代码写的字符串相加操作中。JDK1.5之前JVM是自己主动转为StringBuffer实现的,JDK1.5之后。自己主动转为StringBuilder实现。