StringBuffer
StringBufferクラスは Objectクラスの直接のサブ・クラスです。
java.langパッケージに含まれます。
StringBufferもStringクラスと同様に文字列を表すクラスです。
単なる文字の配列ではなく文字列を操作するための基本的なメソッドも提供します。
Stringクラスのオブジェクトは、初期化された後は内容が変更できませんが、
StringBufferクラスのオブジェクトは、データの追加や変更が可能です。
そのためのメソッドが用意されています。
StringBufferクラスには public な変数は存在しません。
Stringクラスのメソッド
StringBufferクラスには、
引数の区別もすると 3個のコンストラクタと 20個余りのメソッドが定義されています。
メソッドの目的ごとに以下の項目のようにグループ分けして解説します。
- コンストラクタ
- 文字列の長さを操作するのメソッド
- オブジェクトからデータを取り出すメソッド
- データの追加のメソッド
- データの挿入のメソッド
- データの変更のメソッド
- オブジェクト自身の情報を取り出すためのメソッド
コンストラクタ
- public StringBuffer()
- public StringBuffer(int length)
- public StringBuffer(String str)
引数なしのコンストラクタは空のオブジェクトを生成します。
int型の引数を与えるコンストラクタは、指定されたサイズの(中身は空の)
オブジェクトを生成します。
引数に Stringクラスのオブジェクトを与えるコンストラクタは、
そのStringオブジェクトの内容をもつオブジェクトを生成します。
文字列の長さを操作するのメソッド
- public int length()
- public synchronized void setLength(int newLength)
- public int capacity()
- public synchronized void ensureCapacity(int minimumCapacity)
length() メソッドはオブジェクトのサイズを返します。
(現在記憶されている文字列のサイズではない。)
setLength()メソッドは、オブジェクトのサイズを引数で指定したサイズに
設定し直します。
capacity()メソッドは、オブジェクトにあと何文字が記憶できるかを返します。
ensureCapacity()メソッドは、指定したサイズの空き領域を確保できるように
オブジェクトのサイズを調整します。
(オブジェクトのサイズが十分に大きい場合は何も変更しません。)
オブジェクトからデータを取り出すメソッド
- public synchronized char charAt(int index)
- public synchronized void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
charAt()メソッドは、指定されたインデックスの位置にある文字を返します。
getChars()メソッドは、オブジェクトに記憶された文字列の特定の部分を
char型の配列にコピーします。
第1、第2引数は記憶すべき箇所の開始と終了のインデックスです。
第3引数が格納先の char型の配列、第4引数はその配列のどの部分に記憶する
かを先頭のインデックスの値で指定します。
データの追加のメソッド
- public synchronized StringBuffer append(Object obj)
- public synchronized StringBuffer append(String str)
- public synchronized StringBuffer append(char str[])
- public synchronized StringBuffer append(char str[], int offset, int len)
- public StringBuffer append(boolean b)
- public synchronized StringBuffer append(char c)
- public StringBuffer append(int i)
- public StringBuffer append(long l)
- public StringBuffer append(float f)
- public StringBuffer append(double d)
append()メソッドはオブジェクトの末尾に新しいデータを追加します。
与えられたさまざまな型のデータ(あるいはオブジェクト)
は Stringクラスのオブジェクトに変換されます。
char型の配列をデータとして与える場合には、その一部分を指定する引数を
指定できます。第2引数がデータの開始のインデックス、第3引数がデータの
長さです。
返値として返されるのはオブジェクト自身です。
通常は返値をあえて利用する必要はありません。
返値を積極的に利用するのは 《 + 》演算子の記法を用いた場合です。
以下の2つの表現は同じ結果になります。
StringBuffer strbuf;
int i;
strbuf.append( i );
strbuf = strbuf + i;
append() メソッドに synchronized とそうでないものがあるように見えます。
これは単に synchronized でないメソッドの内部で
synchronized のメソッドが呼び出されているからです。
データの挿入のメソッド
- public synchronized StringBuffer insert(int offset, Object obj)
- public synchronized StringBuffer insert(int offset, String str)
- public synchronized StringBuffer insert(int offset, char str[])
- public StringBuffer insert(int offset, boolean b)
- public synchronized StringBuffer insert(int offset, char c)
- public StringBuffer insert(int offset, int i)
- public StringBuffer insert(int offset, long l)
- public StringBuffer insert(int offset, float f)
- public StringBuffer insert(int offset, double d)
insert()メソッドはオブジェクトの記憶している文字列の途中に、
新しいデータを追加します。
第1引数は、挿入すべき位置のインデックスです。
第2引数に与えられたさまざまな型のデータ(あるいはオブジェクト)
は Stringクラスのオブジェクトに変換されます。
返値として返されるのはオブジェクト自身です。
通常は返値をあえて利用する必要はありません。
insert() メソッドに synchronized とそうでないものがあるように見えます。
これは単に synchronized でないメソッドの内部で
synchronized のメソッドが呼び出されているからです。
データの変更のメソッド
- public synchronized void setCharAt(int index, char ch)
setCharAt()メソッドは、第1引数で指定されたインデックスの位置に
記憶された文字を、第2引数で指定された文字に置き換えます。
(挿入するわけではありません。)
オブジェクト自身の情報を取り出すためのメソッド
toString() は記憶された文字列を Stringクラスのオブジェクトとして
返します。