1. 程式人生 > 其它 >面試題04-String-StringBuffer-StringBuilder

面試題04-String-StringBuffer-StringBuilder

  • String是final修飾的,不可變,每次操作都會產生新的String物件
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence,
               Constable, ConstantDesc {
    ......
}
  • StringBuffer和StringBuilder都是再原物件上操作
  • StringBuffer是執行緒安全的,StringBuilder是執行緒不安全的
  • StringBuffer方法都是synchronized修飾的
public final class StringBuffer
        extends AbstractStringBuilder
        implements java.io.Serializable, Comparable<StringBuffer>, CharSequence {
    /* ...... */
    @Override
    public synchronized int compareTo(StringBuffer another) {
        return super.compareTo(another);
    }

    @Override
    public synchronized int length() {
        return count;
    }

    @Override
    public synchronized int capacity() {
        return super.capacity();
    }


    @Override
    public synchronized void ensureCapacity(int minimumCapacity) {
        super.ensureCapacity(minimumCapacity);
    }

    /* ...... */
}
  • 效能:StringBuilder>StringBuffer>String
  • 使用場景:

經常需要改變字串內容時使用後面兩個
優先使用StringBuilder,多執行緒使用共享變數時使用StringBuffer