String、StringBuffer、StringBuilder都是字符数组
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; ...... }
abstract class AbstractStringBuilder implements Appendable, CharSequence { /** * The value is used for character storage. */ char[] value; }
public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable, CharSequence {}
public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence {}
StringBuffer 和 StringBuilder 都是可变的字符序列
String 类的成员变量 value 是 final 的。而StringBuffer 和 StringBuilder的共同父类的成员变量 value 不是final 的,是可以改变的。
StringBuffer 和 StringBuilder改变的方法是数组扩展。
StringBuffer 是多线程安全的,StringBuilder 是多线程不安全的
StringBuffer的修改方法都是同步方法,都有关键字synchronized;StringBuilder的修改方法都没有使用 synchronized 修饰。