こんにちは、ともです。
今回は、StringBuilderクラスの利用方法についてまとめます。
StringクラスとStringBuilderクラスとは、どのように違うのでしょうか。自分が理解していることをまとめておきます。
この記事では次のことに触れています。詳しくはjava.lang.StringBuilderへどうぞ。
- String、StringBuilderの違い
- 文字列の挿入・置換・削除・結合
StringBuilderクラス
StringBuilderクラスは、java.lang.StringBuilderパッケージの文字列を格納するクラスです。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello, Java!");
System.out.println(sb);//Hello, Java!
}
}
Stringクラスと同じように文字列を作成することができますね。
StringBuilderクラスとStringクラスの違いは次です。
- Stringオブジェクトはimmutable
- StringBuilderオブジェクトはmutable
immutableとmutableクラスの違いはこちらの記事を読んでみてください。
immutableとmutable
immutableとは変更不可能を意味します。
次のメソッドを見てください。
StringBuilder sb = new StringBuilder("StringBuilder!");
// 後ろに結合(変更を加える)
sb.append("Java!");
System.out.println(sb);//StringBuilder!Java!
String s = new String("String!");
// 後ろに結合し、新しい文字列を作成(変更はできない)
s.concat("Java!");
// 文字列を変換(StringをSTRINGに変更した文字列を作成)
// 変更はできない
s.replace("String", "STRING");
System.out.println(s);//String
Stringクラスが持っているメソッドは自身の文字列を変更することはできません。
しかし、StringBuilderクラスのインスタンスである文字列は、文字列を挿入・追加・変更・削除などの加工が可能です。
- 文字列を変更しない→String
- 文字列を変更したい→StringBuilder
と使い分けて見てはいかがでしょうか。
挿入・結合・削除・検索
StringBuilder sb = new StringBuilder("abcd");
// 挿入
sb.insert(3, "***");
System.out.println(sb);//ab***cd
// 結合
sb.append("+efg");//ab***cd+efg
System.out.println(sb);
// 削除
sb.delete(3, 6);//ab***cd+efg
System.out.println(sb);
// 検索
System.out.println(sb.indexOf("cd"));//abcd+efgの中でcdは先頭を0として2文字目
System.out.println();
- insert・・・指定した場所に【挿入】
- delete・・・指定した開始位置から終了位置までを【削除】
- append・・・後ろに【結合】
- indexOf・・・先頭から何文字目にあるか【検索】
StringBuilderはデフォルトで16文字のバッファを持っています。
まとめ
JavaのStringBuilderクラスとStringクラスとの違いと、簡単な使用方法について説明しました。
StringBuilderを知らなかった人は使って見てはいかがでしょうか?