String&StringBuffer&StringBuilder

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
线程不安全

原文地址:https://www.cnblogs.com/dengyuanqi/p/7641436.html