String:
String类在Java源码中使用的是 final修饰的char数组组成的字符串(private final char value[];)因此是String不可变对象,线程安全
StringBuffer类
StringBuffer类继承AbstractStringBuilder类,而AbstractStringBuilder类中使用的是char数组保存字符串 (char[] value;)因此StringBuffer是可变对象,又因为其方法加入了同步锁synchronized,因此StringBuffer是线程安全的
StringBuilder类
StringBuilder类也继承AbstractStringBuilder类,而AbstractStringBuilder类中使用的是char数组保存字符串 (char[] value;)因此StringBuilder****是可变对象,又因为其方法没有同步锁,因此StringBuilder是线程不安全的
使用场景:
1、操作少量数据时:使用String
2、单线程下操作大量数据:StringBuilder
3、多线程下操作大量数据:StringBuffer