アカウント名:
パスワード:
String (Java Platform SE 6) [sun.com]
Java 言語は、文字列連結演算子 ( + )、およびその他のオブジェクトから文字列への変換に対する特別なサポートを提供します。文字列連結は StringBuilder (または StringBuffer) クラスとその append メソッドを使って実装されています。文字列変換は Object によって定義された toString メソッドを使って実装され、Java のクラスすべてによって継承されます。文字列連結および文字列変換についての詳細は、Gosling、Joy、および Steele による『Java 言語仕様』を参照してください。
Java言語仕様
15.17.1 文字列連結演算子 + [y-adagio.com]結果は二つのオペランドの文字列を連結して新たに作成したオブジェクト String への参照とする。15.17.1.2 文字列連結の最適化処理系は中間的なオブジェクトStringの作成及び廃棄を避けるために,変換及び連結を一段階で実行してもよい。Javaコンパイラは,繰り返される文字列連結の性能向上を目的として,式の評価によって作成される中間的なオブジェクト String の数を減らすために,クラス StringBuffer(20.13) 又は同様な技術を使用してもよい。
15.17.1 文字列連結演算子 + [y-adagio.com]
結果は二つのオペランドの文字列を連結して新たに作成したオブジェクト String への参照とする。
15.17.1.2 文字列連結の最適化処理系は中間的なオブジェクトStringの作成及び廃棄を避けるために,変換及び連結を一段階で実行してもよい。Javaコンパイラは,繰り返される文字列連結の性能向上を目的として,式の評価によって作成される中間的なオブジェクト String の数を減らすために,クラス StringBuffer(20.13) 又は同様な技術を使用してもよい。
上記はOracleJava実装(OracleにはJRockitもあるので紛らわしいな。なんて呼べばいいんだ?)とJava言語仕様の記述。
教科書的(仕様書的)には「処理系依存」って回答になるんですかね
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy
文字列の連結 (スコア:0)
まず教科書的に答えて、場合によっては最適化が期待できる事を付け加えるのがベストかと。
現場的にはループ内以外で、+での連結が大問題になるケースってあまり無い気がしますけどね。
そのメソッドが頻繁に呼ばれるかどうかはある程度想像できますし。
Re:文字列の連結 (スコア:1)
String (Java Platform SE 6) [sun.com]
Java言語仕様
上記はOracleJava実装(OracleにはJRockitもあるので紛らわしいな。なんて呼べばいいんだ?)とJava言語仕様の記述。
教科書的(仕様書的)には「処理系依存」って回答になるんですかね