以前 Java を使用したとき、長い文字列を結合するために使用される StringBuffer というクラスがあることを知りました。 C# に切り替えた後は、StringBuilder という同様の機能を備えたクラスもあり、略称は sb なので覚えやすいです。
その後、Java に戻ったときに、Java にも StringBuilder があることがわかり、なぜ StringBuffer の後に StringBuilder が起動されたのかに興味がありました。
Java の StringBuilder (C# など) はスレッド セーフではないことが判明しましたが、以前の StringBuffer には特定のスレッド セーフ プロパティがありました。もちろん、StringBuilder は主に、マルチスレッド状況で使用する必要がないという理由で導入されました。
StringBuilder (または StringBuffer) の一般的な使用例は次のとおりです:
public String toString() { return new StringBuilder() .append("Name: " + name) .append("Foo: " + foo) .append("Bar: " + bar) .toString(); }
この場合、StringBuilder はクラス メンバーではなく、単なるローカル変数であり、マルチスレッドの問題はまったくありません。
つまり、StringBuilder の導入によりパフォーマンスが大幅に向上し、セキュリティ上の問題はまったくありません...
Java の StringBuffer と StringBuilder の違いに関連するその他の記事については、PHP 中国語に注意してください。 Webサイト!