class ReverseString {
public static String reverseIt(String source) {
int i, len = source.length();
StringBuffer dest = new StringBuffer(len);
for (i = (len - 1); i >= 0; i--) {
dest.append(source.charAt(i));
}
return dest.toString();
}
}
reverseIt
メソッドは、転送先文字列 dest
の最後に文字を追加するために、 StringBuffer の append()
メソッドを使用する 。 もし追加する文字によって StringBuffer のサイズが現在の大きさを越えて大きくなるならば、 StringBuffer はもっと多くのメモリを割り当てる。 メモリ割り当ては比較的高くつく操作なので、最初に適当な推測をして、容量を初期化することにより、StringBuffer のメモリ割り当ての回数を最小にすることでコードをいっそう効率的にすることができる。例えば、 reverseIt
メソッドは、 dest
のメモリ割り当てを一回だけで確定するように、ソース文字列の長さに等しい初期容量で StringBuffer を作成する。
StringBuffer の最後に文字を追加するために使用する append()
は、 StringBuffer の最後にデータを追加することができる StringBuffer のメソッドの一つにすぎない。 float 、 int 、 boolean のような種々の型や Object を、StringBuffer の最後にデータを追加するいくつかの append()
メソッドがある。 このときデータは、追加される前に、文字列に変換される。
挿入
ときどき、データを StringBuffer の中央に挿入したいことがある。 StringBufffer の insert()
メソッドの1つを使用してこれを行う。 次は文字列を StringBuffer に挿入する方法の例を示す。
StringBuffer sb = new StringBuffer("Drink Java!");
sb.insert(6, "Hot ");
System.out.println(sb.toString());
このコードは次のような表示を行う
Drink Hot Java!
StringBuffer の多くの insert()
メソッドとは、データを挿入する前にインデックスを指定する。 例では、「Hot」が「Java」の「J」の前に挿入される必要がある。 インデックスが 0 で始まるので、「J」のインデックスは6である。 StringBuffer の始めにデータを挿入するには、0 のインデックスを使用する。 StringBuffer の終わりにデータを追加するには、 StringBuffer の現在長に等しいインデックスを使用するか、あるいは append()
を使用する。
文字を指定位置に配置
別の有用な StringBuffer 修飾子は、StringBuffer の指定された位置に文字を設定するsetCharAt()
である。 setCharAt()
は、 StringBuffer を再利用したいときに役に立つ。