Java String特集(一)-AbstractStringBuilder

1101 ワード

1.前言:
最近面接の準備をしていて、ちょうどStringBuilderとStringBufferのソースコードを見ていて、2つのクラスが抽象クラスAbstractStringBuilderを親として継承していることに気づきました.それはちょうどこのクラスからJava Stringのテーマ全体の解析を始めます.
2. AbstractStringBuilderクラスについて
まず、このクラスが提供するすべての方法はロックされていないので、スレッドは安全ではありません.
2.1データ組織
AbstractStringBuilder内部では、valueメンバーが文字キャッシュ(char配列)として維持され、カウンタcountが文字数を統計します.
/**
 * The value is used for character storage.
 */
char[] value;

/**
 * The count is the number of characters used.
 */
int count;

文字数の取得方法:
public int length() {
    return count;
}

キャッシュ容量の取得方法:
public int capacity() {
    return value.length;
}

2.2容量制御
AbstractStringBuilderは、最小容量を使用して自身の文字キャッシュ容量を制御します.このセクションでは、この容量制御メカニズムについて詳しく説明します.
主に3種類の容器制御方式を提供した.
  • ensureCapacity(int minimumCapacity)関数:キャッシュ容量が提供する最小容量パラメータ
  • 以上であることを保証する.
  • trimToSize()関数:文字数が現在の容量より小さい場合、圧縮キャッシュ容量
  • setLength(int newLength)関数:文字の長さを設定する関数で、現在の容量よりも新しい長さが大きい場合はキャッシュも
  • 拡張する.
     
    2.3 append操作
     
    2.4 insert操作
     
    2.5 charAtとsetCharAtの操作