[PR] 迷惑メール トップページプロ3ゼミJavaJava入門講座二学期単位8 →3時間目

3時間目 StringBuilderクラス

8−3−1.StringクラスとStringBuilderクラスの違い

 StringBuilderクラスは、Stringクラスと同様に文字列を扱うクラスです。
又、Stringクラス同様に頻繁に使います。
Stringクラスは、宣言をする事によりメモリ上の位置を知るだけですので、文字列を代入して初めて実際の長さ が確保されます。
そこへ新たな文字列を代入すると別のメモリ上に領域を確保します。
これを棚に例えたら新しい部屋の番号を記憶することになります。
これは、文字列を足した場合もそうです。
str += "append";
これは、strに「"append"」を追加しているわけですが、これは文字列の長さが変わる為、新しい位置に(部屋) 変わってしまい、これが多く重ねれば処理も無駄ですしメモリ上も無駄な領域を使う事になり不効率です。

 このように、文字列を追加や削除する時に、StringBuilderクラスを使います。
StringBuilderクラスは、文字列を追加する場合は、イメージ通りに既にある文字列の後ろに追加されます。
よって、文字列を追加するたびに新しい領域を確保する必要が無くなり、処理や無駄が省けます。
但し、初めから文字列を操作する事を前提としている為、通常の文字列を操作するような場合はStringクラスよ り処理の無駄が多いです。
つまり、普段文字列を扱う場合(文字列を変更しない当の場合)はStringクラスを使い、文字列を直接操作する ような場合はStringBuilderクラスを使います。

 StringクラスとStringBuilderには、お互いを容易に変換できる為、最初のうちはあまり深く考えずに使って も特に問題があるわけではありません。
他のプログラマを参考に徐々に使えるようにすれば良いのです。

8−3−2.StringBuilderクラスの主なメソッド一覧

戻り値 メソッド名及び引数 説明
StringBuilder append(boolean b) boolean 引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(char c) char 引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(char[] str) char 配列引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(char[] str, int offset, int len) char 配列引数の部分配列の文字列表現をこのシーケンスに追加します。
StringBuilder append(CharSequence s) この Appendable に指定された文字シーケンスを追加します。
StringBuilder append(CharSequence s, int start, int end) 指定された CharSequence のサブシーケンスをこのシーケンスに追加します。
StringBuilder append(double d) double 引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(float f) float 引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(int i) int 引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(long lng) long 引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(Object obj) Object 引数の文字列表現をこのシーケンスに追加します。
StringBuilder append(String str) 指定された文字列をこの文字シーケンスに追加します。
StringBuilder append(StringBuffer sb) 指定された StringBuffer をこのシーケンスに追加します。
int length() この文字列の長さを返します。
Strubg toString() このシーケンスのデータを表現する文字列を返します。

8−3−3.サンプルプログラム

 StringBuilderクラスのメソッドを使ったサンプルプログラムを以下に示します。
Sample8_3_1.java
class SampleStringBuilder {

    StringBuilder   sb;

    public SampleStringBuilder(String str) {

        sb = new StringBuilder(str);
    }

    public void view() {

        System.out.println(sb.toString()); // Stringクラスで出力します

        sb.append("追加"); // 文字列を最後尾に追加
        System.out.println(sb.toString());

        sb.append(100); // int型を最後尾に追加
        System.out.println(sb.toString());
    }
}

public class Sample8_3_1 {

    public static void main(String[] args) {

        SampleStringBuilder ssb = new SampleStringBuilder("文字列");

        ssb.view();
    }
}
  
文字列
文字列追加
文字列追加100

2時間目 Stringクラスに戻る     単位9 継承に進む

単位8 クラスライブラリに戻る

トップページに戻る