[JAVA] String, StringBuffer, StringBuilder
1801 ワード
String
Stringのクラスには不変性があります。不変は、値が不変であることを意味します。すなわち、文字列値がheapメモリに割り当てられると、削除されるまで保持されます。
void function() {
String str1 = "kkobi";
String str2 = str1;
String str3 = "kkobi";
}
文字列値がheapメモリに含まれていない場合は、他のメモリ領域に再割り当てされ、変更されません.str 2=str 2+「dev」がstr 2変数値を変更した場合、「kkobi dev」値をstr 2変数にマージするのではなくheapメモリ領域に再割り当てます.
Stringの+演算では、新しいオブジェクトが生成されます.
可変状態ではスレッド間の共有も安全であり、変更なしに読み取りを行うだけであれば、StringBufferやStringBuilderよりもパフォーマンスのメリットが大きい.
StringBuffer StringBuilder
StringBufferとStringBuilderは内部で同じchar配列を使用して文字列を管理します。2つのオブジェクトの違いは、StrinfBufferが同期をサポートし、マルチスレッド環境を安全にすることです。
文字列のマージを複数回試みた場合、Stringの+演算よりもパフォーマンスが優れています.
初期アレイ値は16であり、十分なスペースがない場合、アレイのサイズは2倍になり、Arraysが使用されます.copyOf()関数を使用して値をコピーします.
リファレンス
https://cjh5414.github.io/why-StringBuffer-and-StringBuilder-are-better-than-String/
Reference
この問題について([JAVA] String, StringBuffer, StringBuilder), 我々は、より多くの情報をここで見つけました https://velog.io/@kkobi/JAVA-StringBuffer와-StringBuilderテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol