- 915 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:39:56 ]
- Stringクラスは代入するたびに新しいStringオブジェクトを作るので、
メモリ的にも処理速度的もコストが高いんよ。 例えば、aとbとcの文字列を連結する場合に以下のような処理があったとすると -------------------- String buffer = a; buffer += b; buffer +=c; -------------------- StringBuffer buffer = new StringBuffer(a); buffer.append(b); buffer.append(c); -------------------- Stringでは、 += bをしている処理は a に b の文字列を連結してる のではなく、 aとbを連結したStringオブジェクトを新しく作ってる。 同様に +=c の処理でも 新しいStringオブジェクトを作ってる。 一方StringBufferでは、 .append(b) では 文字列を連結しているので 新しいStringBufferオブジェクトは作っていない。 つまり、新しいオブジェクトを作っていない(newしていない)分 メモリも速度も節約できるということ。
|

|