String StringBuffer StringBuilder
String --> private final char val[] 使用final定义的char数组
StringBuffer -->AbstractStringBuilder char val[] 没有使用final定义
StringBuilder -->AbstractStringBuilder char val[] 没有使用final定义
String因为是final定义的 因此可以理解成常量 线程安全的
StringBuffer
public synchronized void setLength(int newLength) {
super.setLength(newLength);
}
StringBuffer中的方法都是使用Synchronized定义的,因此线程安全的。
StringBuilder
线程不安全