📘
[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