1

何が良いですか

int i = 45;
String str = "dsfgdsgf"+i;

また

int i = 45;
String str = new StringBuilder().append("dsfgdsgf").append(i).toString();

StringBuilder は常に文字列を連結するよりも優れていることをどこかで読んだことがあります

4

7 に答える 7

7

コンパイラは最初のバージョンを 2 番目のバージョンに内部的に変換するため、パフォーマンスに違いはありません。

最初のバージョンの方が読みやすいので、一定数のアイテムを文字列に連結する場合は、最初のバージョンを使用する必要があります。

StringBuilderループなどで文字列に何度も追加する場合に使用します。

于 2013-02-05T11:17:08.080 に答える
4

どちらの場合もパフォーマンスに違いはありません: prooflink . コンパイラは StringBuilder を暗黙的に使用して String を連結します。

もちろん、ほとんどの場合、 1 つのケースは2 つのケースよりもはるかに読みやすいです。

また、整数値の明示的なキャストに大きな違いはありません。

StringBuilder のキャストではAbstractStringBuilder#append(int)を使用し、明示的なキャストではString#valueOf(int)を使用して内部的にInteger#toString(int )を呼び出します。

于 2013-02-05T11:17:17.833 に答える
2

Java の文字列は不変オブジェクトです。これは、書くString str = "dsfgdsgf"+i;ことによって、実際には新しい String オブジェクトを作成し、古いオブジェクトをガベージ コレクターに残すことを意味します。

StringBuilder一方、変更可能なオブジェクトであるため、オブジェクトは変更されます。可能な限りStringBuilder.append()orを使用することをお勧めします。StringBuffer.append()

StringBuilderではないことsynchronizedに注意してくださいStringBuffer

于 2013-02-05T11:24:20.580 に答える
2

既知の形式で値を連結するだけの場合は、次のことを考慮してください。

int i = 45;
String str = String.format("%s%d", "dsfgdsgf", i);
于 2013-02-05T11:15:05.710 に答える
1

はい、StringBuilder は文字列を連結するよりも優れています。次のコード行を使用する場合String str = "dsfgdsgf"+i;

内部で StringBuilder を使用します。したがって、 StringBuilder を直接使用することで、余分な手順を回避しているだけです。

于 2013-02-05T11:15:42.247 に答える
1

String と連結することは不可能であるため、2 番目のオプションの方が適しています。したがって、連結を行う前に String を最初に StringBuilder に変換してから、結果を String に戻す必要があります。

于 2013-02-05T11:16:27.900 に答える
1

追加、削除などによって文字列を何度も変更する場合は、StringBuilder を使用する必要があります。あなたの場合、StringBuilder を使用して、再び String に変換しています。新しい StringBuilder オブジェクトを作成し、それを追加して再度 String に変換する

于 2013-02-05T11:15:01.727 に答える