/が可変String
である場合、 は不変であることがわかっています。しかし、コードで何を使用するか混乱することがあります.. StringまたはStringBuffer/StringBuilder ?? 実際には、最大コード/クイック コードでは、 /よりも優先して使用します。StringBuffer
StringBuilder
String
StringBuffer
StringBuilder
この質問は混乱を解決するためのものです。何か考えと適切な理由がある場合は、返信してください。
/が可変String
である場合、 は不変であることがわかっています。しかし、コードで何を使用するか混乱することがあります.. StringまたはStringBuffer/StringBuilder ?? 実際には、最大コード/クイック コードでは、 /よりも優先して使用します。StringBuffer
StringBuilder
String
StringBuffer
StringBuilder
この質問は混乱を解決するためのものです。何か考えと適切な理由がある場合は、返信してください。
以下は、最も一般的に使用されるこれら 3 つのクラスの主な違いです。
String、StringBuffer、およびStringBuilderから選択する基準
主なアイデアは、String が不変であるということです。したがって、変更しようとすると、新しいオブジェクトが作成されます。StringBuffer と StringBuilder は可変です。そして違いは、最初のものはスレッドセーフです。
StringBuilder を使用する一般的な方法は、非スレッド セーフ環境で String オブジェクトを繰り返し作成するときに何かを解析することです。
たとえば、数値配列 [1, 2, 3] があるとします。オブジェクト「String1String2String3」を作成するには、StringBuilder を使用できます
StringBuilder builder = new StringBuilder();
foreach(Integer num : array) {
builder.append("String").append(num);
}
builder.toString();
を使用するよりも優れていString string = string + ("String" + num);
ます。私の知る限り、コンパイラは StringBuilder へのループで文字列連結を使用して最適化しますが、手動で使用することをお勧めします。
StringBuffer は、同時スレッドによって変更される共有状態がある場合に使用されます。
つまり、一度に 1 つのスレッドだけが StringBuffer オブジェクトの同期されたコードにアクセスできるように、アクセスを制御するための同期されたメソッドがあります。したがって、StringBuffer オブジェクトは通常、マルチスレッド環境で安全に使用できます。
StringBuilder のアクセスは同期されないため、スレッドセーフではありません。同期しないことで、StringBuilder のパフォーマンスは StringBuffer よりも向上する可能性があります。したがって、シングルスレッド環境で作業している場合、StringBuffer の代わりに StringBuilder を使用すると、パフォーマンスが向上する可能性があります。