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
戻値型 | メソッド | 静的 | 説明 |
---|---|---|---|
StringBuilder | append(String s) | 末尾にsを追加する (※引数はintやcharなどもOKです。) | |
StringBuilder | insert(int x, String s) | a番目にsを挿入する (※引数はintやcharなどもOKです。) | |
StringBuilder | replace(int a, int b, String s) | a番目~b番目の文字をsに置き換える | |
void | setCharAt(int a, char s) | a番目の文字をsに置き換える | |
StringBuilder | delete(int a, int b) | a番目~b番目の文字を削除する | |
StringBuilder | deleteCharAt(int a) | a番目の文字を削除する | |
char | charAt(int a) | a番目の文字をchar型で取得する | |
int | indexOf(String s) | sが一番最初に出現するインデックス番号を返す (存在しない場合は -1 が返る) | |
int | indexOf(String s, int a) | sがa番目以降で一番最初に出現するインデックス番号を返す (存在しない場合は -1 が返る) | |
int | lastIndexOf(String s) | sが最後に出現するインデックス番号を返す (存在しない場合は -1 が返る) | |
int | lastIndexOf(String s, int a) | sがa番目より手前で一番最初に出現するインデックス番号を返す (存在しない場合は -1 が返る) | |
int | length() | 文字列の長さ(文字数)を返す | |
StringBuilder | reverse() | 文字列の並びを逆にする | |
String | substring(int a) | a番目以降をString型で返す | |
String | substring(int a, int b) | a番目~b番目をString型で返す | |
void | toString() | 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
コメント