何が良いですか
int i = 45;
String str = "dsfgdsgf"+i;
また
int i = 45;
String str = new StringBuilder().append("dsfgdsgf").append(i).toString();
StringBuilder は常に文字列を連結するよりも優れていることをどこかで読んだことがあります
何が良いですか
int i = 45;
String str = "dsfgdsgf"+i;
また
int i = 45;
String str = new StringBuilder().append("dsfgdsgf").append(i).toString();
StringBuilder は常に文字列を連結するよりも優れていることをどこかで読んだことがあります
コンパイラは最初のバージョンを 2 番目のバージョンに内部的に変換するため、パフォーマンスに違いはありません。
最初のバージョンの方が読みやすいので、一定数のアイテムを文字列に連結する場合は、最初のバージョンを使用する必要があります。
StringBuilder
ループなどで文字列に何度も追加する場合に使用します。
どちらの場合もパフォーマンスに違いはありません: prooflink . コンパイラは StringBuilder を暗黙的に使用して String を連結します。
もちろん、ほとんどの場合、 1 つのケースは2 つのケースよりもはるかに読みやすいです。
また、整数値の明示的なキャストに大きな違いはありません。
StringBuilder のキャストではAbstractStringBuilder#append(int)を使用し、明示的なキャストではString#valueOf(int)を使用して内部的にInteger#toString(int )を呼び出します。
Java の文字列は不変オブジェクトです。これは、書くString str = "dsfgdsgf"+i;
ことによって、実際には新しい String オブジェクトを作成し、古いオブジェクトをガベージ コレクターに残すことを意味します。
StringBuilder
一方、変更可能なオブジェクトであるため、オブジェクトは変更されます。可能な限りStringBuilder.append()
orを使用することをお勧めします。StringBuffer.append()
StringBuilder
ではないことsynchronized
に注意してくださいStringBuffer
。
既知の形式で値を連結するだけの場合は、次のことを考慮してください。
int i = 45;
String str = String.format("%s%d", "dsfgdsgf", i);
はい、StringBuilder は文字列を連結するよりも優れています。次のコード行を使用する場合String str = "dsfgdsgf"+i;
内部で StringBuilder を使用します。したがって、 StringBuilder を直接使用することで、余分な手順を回避しているだけです。
String と連結することは不可能であるため、2 番目のオプションの方が適しています。したがって、連結を行う前に String を最初に StringBuilder に変換してから、結果を String に戻す必要があります。
追加、削除などによって文字列を何度も変更する場合は、StringBuilder を使用する必要があります。あなたの場合、StringBuilder を使用して、再び String に変換しています。新しい StringBuilder オブジェクトを作成し、それを追加して再度 String に変換する