文字列は単純なタイプではなく、一連の文字を表すために使用されるクラスです。キャラクター自体はUnicode標準に準拠しており、それらを初期化する2つの方法があります。
例:文字列greed = "おはよう! /n";
文字列グリーティング= new String(= "おはよう! /n");
文字列の特性は、割り当てられたら、それが指し示すことが変更されない場合、新しい文字オブジェクトを指すことができないことです。
StringBufferは、オブジェクト参照のパスの特性を持つ文字列オブジェクトです。
StringBufferオブジェクトは、操作を動的に増やし、挿入、変更、削除する方法を呼び出すことができ、アレイのようにサイズを事前に指定する必要はありません。 、そのため、ストリングを操作するのは非常に柔軟で便利です。
StringBufferを介して最終的な希望の文字列が生成されると、ToStringメソッドと呼ばれて、文字列オブジェクトに変換できます。
文字列処理におけるこれらの2つのクラスの位置は自明です。次のポイントから説明しましょう
1。実行速度の観点から2つの比較:stringbuffer>文字列
2.String <StringBuffer Reason String:文字列定数文字列バッファ:上記の名前からの文字作成変数、文字列は「文字作成定数」、つまり変更不可能なオブジェクトです。このコードなど、この文の理解について質問があるかもしれません。
string s = "abcd"; s+1;
私たちは明らかに文字列変数を変更しました、なぜそれは変更されていないと言ったのですか? 1つのオブジェクトは、コードの2行目を実行するために使用されます。つまり、オブジェクトは以前に変更されていないため、文字列はこのメカニズムのために、文字列が文字列で動作する場合はいつでも、文字列が変わらないと言います。実際、新しいオブジェクトは常に作成されており、元のオブジェクトはゴミになり、この実行がどれほど効果的であるかを想像できます。
しかし、弦楽器は弦楽器であり、実際にはオブジェクトを動作させるときはいつでも、弦のようなものを作成しません。速度は高速になります
3。特別な例:
コードコピーは次のとおりです。
string str = "これは" + "simple" + "テスト"のみです。
StringBuffer Builder = new StringBuilder( "これは唯一の")。append( "simple")。append( "test");
STRオブジェクトを生成する速度が単純に速すぎることに驚くでしょう。現時点では、StringBufferは速度がまったく利点がありません。実際、これはJVMのトリックです。
string str = "これは" + "simple" + "テスト"のみです。
実は:
文字列str =「これは単純なテストのみです」。
したがって、それほど時間はかかりません。しかし、ここで注意すべきは、あなたの文字列が別の文字列オブジェクトから来た場合、速度はそれほど高速ではないということです。
string str2 = "これは";
この時点で、JVMは元の方法で定期的にそれを行います。
4.StringBuilderおよびStringBuffer
StringBuilder:StringBufferセキュア:スレッドセーフStringバッファーの複数のスレッドで使用すると、JVMはStringBuilderの動作が安全であることを保証できません。 。 の。もちろん、ほとんどの場合、単一のスレッドの下で動作しているため、ほとんどの場合、StringBufferの代わりにStringBuilderを使用することをお勧めします。これが速度の理由です。
3つの使用の要約:
1.少量のデータを操作する場合は、=文字列を使用します
2。単一のスレッド文字列バッファー= StringBuilderで大量のデータを操作します
3.マルチスレッド文字列バッファー= StringBufferで大量のデータを操作する