📘

[Java]StringBuilder

に公開

StringBuilder

JavaのStringは不変(immutable)です。
つまり+で文字列を結合すると、新しい文字列オブジェクトが都度生成されるため、処理が重くなります。
一方、StringBuilderは可変(mutable)な文字列を扱い、効率よく変更できるのが特徴です。

特徴 内容
可変オブジェクト 内容を書き換えられる(再生成しない)
高速 + 演算よりメモリ効率が良い
スレッド非安全 複数スレッドから同時に使うのは非推奨(その場合は StringBuffer

文字列を追加

append(String str)を使用します。

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");

System.out.println(sb.toString()); // → Hello World

文字列を挿入

insert(int offset, String str)を使用します。

StringBuilder sb = new StringBuilder("Hello World");
sb.insert(6, "Java ");
System.out.println(sb); // → Hello Java World

範囲を置換

replace(int start, int end, String str)を使用します。

StringBuilder sb = new StringBuilder("Hello World");
sb.replace(6, 11, "Java");
System.out.println(sb); // → Hello Java

範囲を削除

delete(int start, int end)を使用します。
startからend-1までの文字を削除します。

StringBuilder sb = new StringBuilder("Hello Java World");
sb.delete(5, 10);
System.out.println(sb); // → Hello World

文字列を反転

reverse()を使用します。

StringBuilder sb = new StringBuilder("abcd");
sb.reverse();
System.out.println(sb); // → dcba

Discussion