string、stringbuffer、stringbuilder の違いは何ですか?
電話インタビューで、編集者は StringBuilder がスレッドセーフであるかどうかを尋ねられました。口走ってしまっても大丈夫ですが、開発経験が 2 年あるかどうかは疑問に思われます。長期間このクラスを使用していなかったために、選択したクラスを忘れてしまいました。また、基礎がしっかりしていないとも言えます。皆さんの中にそのような経験をした人がいるかどうかわかりませんが、記憶を高めるためにそれを書面に記録しておくとよいでしょう。
String: String は Final で変更されるため、その値は不変であることは誰もが知っています。その結果、String に対して操作が実行されるたびに新しい String オブジェクトが生成されます。これは非効率であるだけでなく、図に示すように、限られたメモリ領域を大量に無駄にしています。
最初の文字列値が「abc」で、その後に新しい文字列を追加していることがわかります。この文字列「 bv 」の場合、このプロセスではスタック メモリ内のメモリ スペースを再度オープンする必要があります。最後に、「abcbv」文字列もそれに応じてメモリ スペースをオープンする必要があります。このような短い 2 つの文字列は、メモリ スペースを 3 つオープンする必要があります。これはメモリ空間の膨大な無駄であると言わざるを得ません。頻繁な文字列関連の操作に対処するために、文字列の変化を処理する 2 つの新しいクラス (StringBuffer クラスと StringBuild クラス) が導入されました。
StringBuilder クラス: Java 5 で提案され、変更可能な文字列を特徴とします。実行効率が高く、スレッドは安全ではありません。
StringBuffer クラス: 可変文字列、低い実行効率、およびスレッドの安全性を特徴とします。
タイムが速くなっていることがわかります。
概要:
少量のデータを操作する場合は、文字列を使用します。
マルチスレッド操作文字列バッファ操作 大量のデータ StringBuffer;
大量のデータを操作するシングルスレッド操作の文字列バッファ StringBuilder。
推奨チュートリアル: 「java チュートリアル」
以上がstring、stringbuffer、stringbuilder の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。