public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; ...................
public final class StringBuffer extends AbstractStringBuilder abstract class AbstractStringBuilder implements Appendable, CharSequence { /** * The value is used for character storage. */ char[] value;
@Override public synchronized int length() { return count; } @Override public synchronized int capacity() { return value.length; } @Override public synchronized void ensureCapacity(int minimumCapacity) { super.ensureCapacity(minimumCapacity); }
每次修改String的值都會從新生成一個新的String對象,而後再將指針指向新的String對象,StringBuffer和StringBuilder每次都是對象自己進行操做,而不是生成新的對象。StringBuilder的性能會比StringBuffer好一點,不過卻要冒多線程不安全的風險java