StringBufferとStringBuilder

StringBufferとStringBuilderの最新ニュースをまとめて検索!

StringBuffer クラスJavaにある二つの中核となる文字列クラスのひとつである。多くの場合、Stringクラスが使われるが、StringBuffer クラスはミュータブルオブジェクトであり、一方 String クラスは イミュータブルである。 つまり StringBuffer オブジェクトは更新されうるが、String クラスでは似たようなメソッドが新たにStringオブジェクトを生成しメソッドの戻り値としてreturnされた文字列の内容が変更されることで実現される。多くのString オブジェクトを生成しては捨てていく処理の替わりにStringBufferを使った方がより効率的である。

StringBuilder クラスは、同期を考慮しないことがStringBufferとは異なる点であり、これはJ2SE 5.0で導入された。オブジェクトにアクセスするシングルスレッドのときだけ、StringBuilderStringBufferよりもより効率的に使われる。

StringBufferStringBuilderjava.lang パッケージに含まれている。

パフォーマンス改善としてStringの替わりにStringBufferを使ったコード例を以下に示す。

StringBuffer sbuf = new StringBuffer(300);
for (int i = 0; i < 100; i++) {
  sbuf.append(i);
  sbuf.append('\n');
}

加えて、Javaコンパイラ (e.g., javac) は通常、加法演算子による文字列とオブジェクトの連結にStringBuilder (または StringBuffer)を使用する。例として、下のコード

String s = "a + b = " + a + b;

は以下のように解釈される。

StringBuffer sbuf = new StringBuffer(32);
sbuf.append ("a + b = ");
sbuf.append(a);
sbuf.append(b);
String s = sbuf.toString();

上のコードでは、abプリミティブ変数でもオブジェクトでもよい。

最終更新 2009年11月23日 (月) 05:59 (日時は個人設定で未設定ならばUTC)。
【StringBufferとStringBuilder】変更履歴

ご利用上の注意