[API] java.lang.StringBuilderクラス

java.lang.StringBuilderクラスは可変な文字列の操作を行うためのクラスです。

StringBuilderの特徴

可変文字列を扱うクラスは他に java.lang.StringBufferがあります。
大きな違いは、StringBufferがスレッドセーフだが処理が遅い、
StringBuilderはスレッドセーフではないが処理が早いという点です。

使い分けとしては、通常はStringBuilderを使用し、
マルチスレッド下で処理する必要がある時はStringBufferを使用します。

StringBuilderはデフォルトで16文字文のバッファを持っているので
コンストラクタに文字列を渡してStringBuilderを生成した場合は、
渡した文字数+16文字のバッファを持ちます。
(例)StringBuilder sb = new StringBuilder(“abcde”);
   sb.capacity(); →21

StringBuilderのreplace やreverseは再代入しなくとも値が書き換えられます。

StringBuilderの継承・実装

継承クラス

java.lang.Object
 ・java.lang.StringBuilder

実装インターフェース

java.io.Serializable
・java.lang.Appendable
・java.lang.CharSequence

導入バージョン

・JDK1.4

StringBuilderのAPI

【主要メソッド】
戻値型メソッド静的説明
StringBuilderappend(String s)末尾にsを追加する
(※引数はintやcharなどもOKです。)
StringBuilderinsert(int x, String s)a番目にsを挿入する
(※引数はintやcharなどもOKです。)
StringBuilderreplace(int a, int b, String s)a番目~b番目の文字をsに置き換える
voidsetCharAt(int a, char s)a番目の文字をsに置き換える
StringBuilderdelete(int a, int b)a番目~b番目の文字を削除する
StringBuilderdeleteCharAt(int a)a番目の文字を削除する
charcharAt(int a)a番目の文字をchar型で取得する
intindexOf(String s)sが一番最初に出現するインデックス番号を返す
(存在しない場合は -1 が返る)
intindexOf(String s, int a)sがa番目以降で一番最初に出現するインデックス番号を返す
(存在しない場合は -1 が返る)
intlastIndexOf(String s)sが最後に出現するインデックス番号を返す
(存在しない場合は -1 が返る)
intlastIndexOf(String s, int a)sがa番目より手前で一番最初に出現するインデックス番号を返す
(存在しない場合は -1 が返る)
intlength()文字列の長さ(文字数)を返す
StringBuilderreverse()文字列の並びを逆にする
Stringsubstring(int a)a番目以降をString型で返す
Stringsubstring(int a, int b)a番目~b番目をString型で返す
voidtoString()String型で返す
(StringBuilder主要メソッドサンプル)

//元データ
StringBuilder sb1 = new StringBuilder("ABCDEFG");
StringBuilder sb2 = new StringBuilder("ABCDEABCDEABCDE");
StringBuilder sb3 = new StringBuilder("あいうえお");


//※以下の結果は全てtoStringしたものです

//末尾に"***"を付加する
sb1.append("***");
→ "ABCDEFG***"

//インデックス番号1(2文字目)に"***"を挿入する
sb1.insert(1, "***");
→ "A***BCDEFG"

//インデックス番号2~4(3~4文字目)を"***"に置換する
sb1.replace(2, 4, "***");
→ "AB***EFG"

//インデックス番号3(4文字目)を'*'に置換する
sb1.setCharAt(3, '*');
→ "ABC*EFG"

//インデックス番号0~2(1~2文字目)を削除する
sb1.delete(0,2);
→ "CDEFG"

//インデックス番号3(4文字目)を削除する
sb1.deleteCharAt(3);
→ "ABCEFG"

//インデックス番号3(4文字目)を取得する
sb1.charAt(3)
→ 'D'

//"CD"が一番最初に出現するインデックス番号を取得する
sb2.indexOf("CD")
→ 2
sb2.indexOf("HOGE")
→ -1 (見つからないので-1)

//インデックス番号5(6文字目)以降で
 "CD"が最初に出現するインデックス番号を取得する
sb2.indexOf("CD", 5)
→ 7

//"CD"が一番最後に出現するインデックス番号を取得する
sb2.lastIndexOf("CD")
→ 12

//インデックス番号10(11文字目)以前で
 "CD"が最後に出現するインデックス番号を取得する
sb2.lastIndexOf("CD", 10)
→ 7

//文字数を取得する
sb1.length();
→ 7
sb3.length();
→ 5

//文字列の並びを反転させる
sb1.reverse();
→ "GFEDCBA"

//インデックス番号3(4文字目)以降の文字列を取得する
sb1.substring(3)
→ "DEFG"

//インデックス番号0~3(1~3文字目)の文字列を取得する
sb1.substring(0, 3);
→ "ABC"

//StringBuilderをString型で取得する
sb1.toString();
→ "ABCDEFG"

StringBuilderサンプルソース

(StringBuilderSample.java)

public class StringBuilderSample {
  public static void main(String args[]) {

    //StringBuilderの生成とデータアペンド
    StringBuilder sb = new StringBuilder();
    sb.append("ABC");
    sb.append("DEF");

    //画面出力
    System.out.println(sb.toString());
 }
}
(実行結果)
C:\>java StringBuilderSample ABCDEF

関連記事

コメント

タイトルとURLをコピーしました