Previous | Next | Trail Map | Writing Java Programs | String と StringBuffer クラス


StringBuffer の変更

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 を再利用したいときに役に立つ。


Previous | Next | Trail Map | Writing Java Programs | String と StringBuffer クラス