1 可变性
String对象一旦创建就不可改变了,因为字符串是放在常量池的。
StringBuffer和StringBuilder中的字符串是可变的,因为字符串放在字符数组中。
2 线程安全
StringBuilder不是线程安全的,StringBuffer是线程安全的。
3 StringBuilder和StringBuffer都是AbstractStringBuilder的子类
4 处理速度
String最慢,StringBuilder最快,StringBuffer中间。
因为String是不可变的,因此加入要append的话,其实是要创建新的对象的,又加重了gc的负担。
StringBuffer是加了锁的,多了开销。
5 适用情况
String适合于字符串不变的情况。
StringBuilder单线程,字符串易变的情况。
StringBuffer多线程,字符串易变的情况。