2010-12-02 13 views

答えて

1

あなたのシナリオでは、あなたのすべての "+"が1つの行(私は1つの文字列を作成すると信じています)に違いがあるかどうかはわかりません。しかし、一般的に、Stringは不変オブジェクトであり、真に操作されるのではなく、StringBuffersを使用して作成され、破棄されます。

StringBuffers(および一般的にStringBuilders)を使用すると、最終的にはより効率的なコードを使用できます。あなたがgoogle "String対StringBuffer対StringBuilder"の場合、統計を詳述する多くの記事を見つけることができます。

+0

ありがとうございました。私はそれをgoogledと記事を読んで、それは多く説明した。 – code511788465541441

1

効率の

。 Javaの文字列連結では、バックグラウンドでStringBuildersが使用されるため、場合によっては、それを自分で制御することで効率を少し上げることができます。

0

コードを10000時間実行して時間を測定するだけです。それは明らかです。 背景情報:StringBuilderは使用できませんが、Stringは不変です。したがって、Stringを連結するたびに、配列をコピーする必要があります。

PS:コンパイラによっては、状況が最適化されることがあります。おそらく、変数を静的にfinalにすると、内部的には1つの文字列になり、連結はありません。

0

まず、StringBufferは同期されているため、通常はStringBuilderを使用します。しばらく前に+が再実装され、StringBuilderを使用しています。

2番目の@Riggyは、単一の式で発生する限り、実際には+を最適化します。

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

を次に効果的なコードになるでしょう:あなたがした場合でも、そのため、コンパイラの最適化の String s = new StringBuilder(s).append(a).append(b).append(c).append(d).toString();

0

に最適ではない

String s =""; 
s = new StringBuilder(s).append(a).toString(); 
s = new StringBuilder(s).append(b).toString(); 
s = new StringBuilder(s).append(c).toString(); 
s = new StringBuilder(s).append(d).toString(); 

、それがまたはを行わない場合がありますあなたのアプリの違い。参照するには、比較速度テストを実行する必要があります。

しかし、パフォーマンスに執着する前に、プログラムが正常に動作するようにしてください。 「時期尚早最適化はすべての悪の根源です。」

関連する問題