文字列文字列定数
StringBuffer文字列変数(スレッドセーフ)
StringBuilder文字列変数(非スレッドセーフ)
簡単に言えば、文字列タイプと弦楽型タイプの主なパフォーマンスの違いは、実際には文字列が不変のオブジェクトであることです。したがって、文字列タイプを変更するたびに、実際には新しい文字列オブジェクトを生成し、新しい文字列オブジェクトをポインターに向けることに相当します。したがって、オブジェクトが生成されるたびにシステムのパフォーマンスに影響を与えるため、コンテンツを変更する文字列に文字列を使用しないことが最善です。特に、メモリに参照されるオブジェクトが多すぎる場合、JVMのGCが機能し始めます。これは間違いなく非常に遅くなります。
StringBufferクラスを使用すると、結果は異なります。結果は、新しいオブジェクトを生成してからオブジェクト参照を変更する代わりに、stringbufferオブジェクト自体で動作するたびに動作します。したがって、一般に、特に文字列オブジェクトがしばしば変更される場合は、StringBufferを使用することをお勧めします。いくつかの特別な場合、文字列オブジェクトの文字列スプライシングは、実際にはJVMによってStringBufferオブジェクトのスプライシングとして解釈されます。したがって、文字列オブジェクトの速度は、これらの時代にStringBufferオブジェクトよりも遅くはありません。特に、次の文字列オブジェクトの生成では、文字列効率はstringbufferよりもはるかに高速です。
文字列s1 = "これは" + "simple" + "テスト"のみです。
stringbuffer sb = new StringBuilder( "this is a a")。append( "simple")。append( "test");
String S1オブジェクトを生成する速度が速すぎることに驚くでしょう。現時点では、StringBufferは速度に利点がありません。実際、これはJVMのトリックです。 JVMの目には、これ
文字列s1 = "これは" + "simple" + "テスト"のみです。実際、それは次のとおりです。
文字列s1 = "これは単純なテストのみです";だからもちろん、それはあまり時間がかかりません。しかし、ここで注意すべきは、あなたの文字列が別のものから来た場合です
文字列オブジェクトの場合、速度はそれほど高速ではありません。たとえば、:
文字列s2 =「これはaのみです」;
文字列s3 = "simple";
文字列s4 = "test";
文字列S1 = S2 + S3 + S4;
この時点で、JVMは元の方法で定期的にそれを行います
ほとんどの場合、stringbuffer> string
stringbuffer
java.lang.stringbufferスレッドセーフ可変文字シーケンス。文字列のような文字列バッファーですが、変更できません。いつでも特定の一連の文字が含まれていますが、シーケンスの長さとコンテンツは、一部のメソッド呼び出しによって変更できます。
文字列バッファーは、複数のスレッドに安全に使用できます。これらの方法は、必要に応じて同期することができるため、特定のインスタンスのすべての操作は、関係する各スレッドによって行われたメソッド呼び出しの順序と一致するシリアル順序で発生するようです。
StringBufferの主な操作は、あらゆるタイプのデータを受け入れるために過負荷にすることができる追加および挿入メソッドです。各メソッドは、指定されたデータを文字列に効果的に変換し、その文字列の文字を文字列バッファーに追加または挿入できます。追加方法は、常にこれらの文字をバッファの最後に追加します。挿入方法は、指定されたポイントに文字を追加します。
たとえば、zが現在のコンテンツが「start」である文字列バッファオブジェクトを指す場合、このメソッドはz.append( "le")を呼び出し、文字列バッファーに「startle」を含み、z.insert(4、 "le")が文字列バッファを変更して「スターレット」を含みます。
ほとんどの場合、stringbuilder> stringbuffer
Java.lang.StringBuilde
Java.lang.StringBuilder可変文字シーケンスは5.0で新しくなっています。このクラスは、StringBuffer互換のAPIを提供しますが、同期することは保証されていません。このクラスは、文字列バッファーが単一のスレッドで使用される場合(これは一般)、StringBufferの単純な代替品になるように設計されています。可能であれば、ほとんどの実装ではStringBufferよりも速いため、このクラスを最初に取ることをお勧めします。両方の方法は基本的に同じです。
上記は、Java String、StringBuffer、StringBuilderの情報の編集です。今後も関連情報を追加し続けます。このウェブサイトへのご支援ありがとうございます!