StringBuffer是一个从JDK1.0开始就存在的类,他就像String类一样,不过其内部成员是可以修改的。StringBuilder是JDK1.5新引入的一个类,他和StringBuffer提供相同的接口。相同点:他们继承相同的父类: AbstractStringBuilder他们实现相同的接口: java.io.Serializable, CharSequence他们基本上对外提供相同的方法不同点:StringBuffer类是线程安全的,所有StringBuffer提供的public方法基本上都是synchronized的StringBuilder类不是线程安全的,他的方法没有被synchronized锁修饰
楼上正确。补充说明: 所谓的线程安全问题就是同时有多个线程访问同一个资源时引起的数据混乱问题。StringBuffer是线程安全的,所以当它作为成员变量时不存在线程安全问题。StringBuilder是线程不安全的,在作为成员变量时有可能出现线程不安全问题。如果在方法内部使用一个这样的变量,用StringBuilder效率会更高,因为首先StringBuilder没有加锁,其次方法内部不存在线程安全问题。