1

私はこの質問と同様のものを見ましたが、重複していないと思います:

StringBuilder と Java の toString() での文字列連結

これが取り引きです。今朝、私の非常に賢い同僚が、Javaが最大8または16の文字列連結を最適化する方法について話しているのを聞きました(この時点ではわかりません)。これは私が意味することのあいまいな説明だったかもしれないので、ここに 6 つの文字列連結の例を示します:

public String test(){
     return "a" + "b" + "c" + "d" + "e" + "f";
}

これが実際に翻訳されるように:

public String test(){
     StringBuilder sb = new StringBuilder();
     return sb.append("a").append("b").append("c").append("d").append("e").append("f").toString();
}

会話を先に終わらせなければならなかったのですが、これは本当ですか?もしそうなら、誰かがこの最適化が 8/16 または x で完了するまでの正確な数の詳細を提供できますか?

これは聞く前は知りませんでした。本当かどうかわかってよかった。

4

2 に答える 2

3

リクエストに応じて、質問への回答としての私のコメントは次のとおりです。

Java で文字列連結がどのように機能するかについての完全な説明は、次のブログ投稿で確認できます。

于 2012-05-07T13:26:56.737 に答える
1

正確な数についてはわかりませんが、通常、+ループの繰り返しで連結が発生する場合を除き、文字列を演算子で連結することについて心配する必要はありません。これは、コンパイラが最適化できず、StringBuilder明示的に使用する必要がある場合です。 、またはString.concat.

どの方法が最速かは、データが定数か変数かによっても異なります。あなたの例では、文字列はコンパイル時にに連結されます"abcdef"

于 2012-05-07T11:30:38.290 に答える