@634

StringBufferクラス

Advertisement

説明

基本的にはStringクラスと似ている。こっちは変更可能な文字列として管理する
その名の通り、バッファ領域を確保するオブジェクトをつくる。

メソッドとかコンストラクタとかはココ↓。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/StringBuffer.html

ちょっと引用。

文字列バッファは、バイナリ文字列の連結演算子 + を実装するためにコンパイラで使用されます。たとえば、次のコード
x = "a" + 4 + "c"
は、以下の同等なコードとしてコンパイルされます。
x = new StringBuffer().append("a").append(4).append("c").toString()

作ってみた。

とりあえずつくるだけ。
public class Test{
    public static void main(String args[]){
        //これで16文字分の領域
        StringBuffer sb1 = new StringBuffer();

        //これは10文字分の領域
        StringBuffer sb2 = new StringBuffer(10);

        //これは、文字列「abc」+16文字分の領域
        StringBuffer sb3 = new StringBuffer("abc");
    }
}
説明は上の通り。

length() と capacity()メソッド

length()メソッド。オブジェクトが管理してる文字列の文字数を返す。

capacity()は名前の通り、キャパシティー(許容量)を返す。バッファが何文字分の領域を確保しているか知りたいときに使う。

使用例。
public class Test{
    public static void main(String args[]){
        StringBuffer sb1 = new StringBuffer("abc");

        System.out.println("文字の数は : " + sb1.length());
        System.out.println("確保領域は : " + sb1.capacity());
    }
}
上の場合sb1が管理している文字数はabcの3文字。領域はabc+16文字分だから19文字分の領域のはず。

結果
文字の数は : 3
確保領域は : 19
予想通り。

append()メソッド

append()メソッドは文字列を追加するメソッド。
public class Test{
    public static void main(String args[]){
        StringBuffer sb1 = new StringBuffer("abc");
        System.out.println(sb1);

        sb1.append("def");
        System.out.println(sb1);
    }
}
結果
abc
abcdef
文字列defが、初期値のabcに連結された。

ちなみに sb1 = sb1 + "def"; とかやってもダメなので注意。
Stringクラスならできる。

toString()メソッド

toString()はStringBufferオブジェクトをStringオブジェクトに変換して返すメソッド。
たとえば以下のコードはコンパイルエラー。
public class Test{
    public static void main(String args[]){
        StringBuffer sb = new StringBuffer("abc");
        String str = new String();

        str = sb;
    }
}
StringとStringBufferは、おなじ文字列を扱うオブジェクトでも、互換性がない

そこで以下のようにする。
public class Test{
    public static void main(String args[]){
        StringBuffer sb = new StringBuffer("abc");
        String str = new String();

        str = sb.toString();
    }
}

Advertisement

ショートカット

634
このカテゴリのトップページに戻る
634labs
   UIコレクションギャラリー

サイト検索

Google

Web サイト内

Y!ログール

ビリヤード