StringBuffer クラスRevised: Jan./3rd/2002: Since: Jan./1st/2002
文字列は String クラスのオブジェクトとして保持しますが、可変の場合は StringBuffer を用います。
java.lang.Object | +--java.lang.StringBuffer
API 仕様では次のように説明されています:
文字列バッファは可変の文字列を実装します。文字列バッファは String と似ていますが、変更できる点が異なります。文字列バッファには常に文字列が格納されていますが、文字列の長さと内容は特定のメソッドの呼び出しにより変更できます。
StringBuffer() |
文字を持たず、初期容量が 16 文字である文字列バッファを構築します。 |
StringBuffer(int length) |
文字を持たず、引数 length によって指定された初期容量である文字列バッファを構築します。 |
StringBuffer(String str) |
文字列バッファを構築し、文字列引数に等しい文字列を表すようにします。 |
文字列バッファには格納可能文字数の容量がありますが、文字列操作によって文字が溢れる場合は、自動的に容量が増加します。
メソッドが多いので、代表的なメソッドの名前だけ紹介しておきます。全てのメソッドの詳細な定義は API 仕様を直接ご確認ください。
append()charAt()char 型で返す。delete(), deleteCharAt()insert()length()int 型で返す。replace()reverse()substring()String 型で返す。toString()String 型で返す。append() と insert() の例を挙げます。
class TestAppIns{
public static void main(String args[]){
//インスタンス化
StringBuffer sb1=new StringBuffer("StringBuffer");
StringBuffer sb2=new StringBuffer("Object");
System.out.println("obj1: "+sb1);
System.out.println("obj2: "+sb2);
//append()
System.out.println("--------append()--------");
System.out.println(" char: "+sb1.append('-'));
System.out.println("String: "+sb1.append("文字列"));
System.out.println("Object: "+sb1.append(sb2));
System.out.println("obj1: "+sb1);
//insert()
System.out.println("--------insert()--------");
int i=sb1.length();
System.out.println("0, int: "+sb1.insert(0, i));
System.out.println("2, char: "+sb1.insert(2, '-'));
System.out.println("obj1: "+sb1);
}
}
append() では、 char 型、 String 型、 オブジェクトを追加しています。続いて、 length() メソッドで文字列バッファの文字数を int 型で取得しています。 insert() では、 int 型、 char 型を挿入しています。挿入位置を示すオフセット値は、一文字目が0で、指示した位置の直前に挿入されます。つまり、0を指示すると先頭に挿入されます。
C:\Java>javac TestAppIns.java C:\Java>java TestAppIns obj1: StringBuffer obj2: Object --------append()-------- char: StringBuffer- String: StringBuffer-文字列 Object: StringBuffer-文字列Object obj1: StringBuffer-文字列Object --------insert()-------- 0, int: 24StringBuffer-文字列Object 2, char: 24-StringBuffer-文字列Object obj1: 24-StringBuffer-文字列Object