文字列オブジェクトは変更できません。 System.Stringクラスでメソッドのいずれかを使用するたびに、メモリ内に新しい文字列オブジェクトを作成する必要があります。これには、新しいオブジェクトに新しいスペースを割り当てる必要があります。新しい文字列オブジェクトの作成に関連するシステムのオーバーヘッドは、文字列で実行するために繰り返し変更が必要な状況では非常に高価になる可能性があります。新しいオブジェクトを作成せずに文字列を変更する場合は、System.text.StringBuilderクラスを使用できます。たとえば、StringBuilderクラスを使用すると、ループで多くの文字列を連結すると、パフォーマンスが向上します。
過負荷のコンストラクター法で変数を初期化することにより、次の例で説明するように、StringBuilderクラスの新しいインスタンスを作成できます。
StringBuilder myStringBuilder = new StringBuilder( "Hello World!");
(i)容量と長さを設定します
StringBuilderオブジェクトは、カプセル化する文字列内の文字の数を許可する動的オブジェクトですが、保持できる最大数の文字の値を指定できます。この値はオブジェクトの容量と呼ばれ、現在のstringbuilderオブジェクトが保持する文字列の長さと混同しないでください。たとえば、文字列「hello」(長さ5)を使用して、stringbuilderクラスの新しいインスタンスを作成し、オブジェクトの最大容量が25であることを指定できます。stringbuilderが変更された場合、容量に達するまで空間を再配分しません。容量に達すると、新しいスペースが自動的に割り当てられ、容量が2倍になります。オーバーロードされたコンストラクターの1つを使用して、StringBuilderクラスの容量を指定できます。次のコードの例は、MyStringBuilderオブジェクトを最大25ブランクに拡張できることを指定しています。
StringBuilderMyStringBuilder = new StringBuilder( "Hello World!"、25);
さらに、オブジェクトの最大長さは、読み取り/書き込み容量プロパティを使用して設定できます。次のコード例では、容量プロパティを使用して、オブジェクトの最大長を定義します。
mystringbuilder.capacity = 25;
(ii)次のリストには、このタイプのいくつかの一般的な方法がリストされています。
(1)追加方法を使用して、現在のStringBuilderオブジェクトで表される文字列の最後にテキストまたはオブジェクトの文字列表現を追加できます。次の例では、StringBuilderオブジェクトを「Hello World」に初期化し、オブジェクトの最後にテキストを追加します。スペースは必要に応じて自動的に割り当てられます。
StringBuilderMyStringBuilder = new StringBuilder( "Hello World!"); myStringBuilder.Append( "What a Beautiful Day"); Console.WriteLine(MyStringBuilder);
この例にはHello Worldが表示されます!なんて厄介な日。コンソールへ。
(2)AppendFormatメソッドは、StringBuilderの最後にテキストを追加し、Iformattableインターフェイスを実装するため、フォーマットセクションで説明されている標準形式の文字列を受け入れることができます。この方法を使用して、変数の形式をカスタマイズし、これらの値をStringBuilderの背面に追加できます。次の例では、AppentFormatメソッドを使用して、整数値を通貨値形式にstringBuilderの端に配置します。
int myint = 25; stringbuilder mystringBuilder = new StringBuilder( "Your Total is"); mystringBuilder.AppendFormat( "{0:c}"、myint); console.writeline(mystringbuilder);この例には、合計がコンソールに25.00ドルです。
(3)挿入メソッドは、現在のStringBuilderの指定された位置に文字列またはオブジェクトを追加します。次の例では、この方法を使用して、単語をStringBuilderの6番目の位置に挿入します。
StringBuilderMyStringBuilder = new StringBuilder( "Hello World!"); myStringBuilder.Insert(6、 "Beautiful"); Console.WriteLine(MyStringBuilder);
この例には、hello beautifulworldが表示されます!コンソールへ。
(4)削除方法を使用して、現在のStringBuilderから指定された数の文字を削除でき、削除プロセスはゼロから開始される指定されたインデックスから開始されます。次の例では、削除方法を使用してStringBuilderを短くします。
StringBuilderMyStringBuilder = new StringBuilder( "Hello World!"); myStringBuilder.Remove(5,7); Console.WriteLine(MyStringBuilder);
この例では、コンソールに挨拶します。
(5)交換方法を使用して、StringBuilderオブジェクトの文字を別の指定された文字に置き換えることができます。次の例では、交換方法を使用してStringBuilderオブジェクトを検索し、すべての感嘆符のマーク文字(!)を見つけ、質問マーク文字(?)に置き換えます。
StringBuilderMyStringBuilder = new StringBuilder( "Hello World!"); myStringBuilder.Replace( '!'、 '?'); console.writeline(mystringbuilder);
この例にはHello Worldが表示されますか?コンソールへ
getsqlmapclientTemplate()。queryforlist((new StringBuilder())。append(entityClass.getName())。
JavaのStringBuilderクラス
プログラムに追加の文字列が頻繁に必要な場合、文字列の連結に +を使用することはお勧めしません。 Java.lang.StringBuilderクラスの使用を検討できます。このクラスを使用して生成されたオブジェクトは、デフォルトで16文字の長さを持ちます。また、自分で初期の長さを指定することもできます。添付の文字が収容可能な長さを超えると、stringbuilderオブジェクトは自動的に長さを増加させて、添付の文字に対応します。文字列を頻繁に取り付ける必要がある場合、StringBuilderクラスを使用すると、効率を大幅に改善できます。次のコード:
Javaコード
public class appendStringTest {public static void main(string [] args){string text = ""; long begintime = system.currenttimemillis(); for(int i = 0; i <10000; i ++)text = text+i; long endtime = system.currenttimemillis(); system.out.println( "実行時間:" +(endtime-begintime)); stringbuilder sb = new StringBuilder( ""); begintime = system.currenttimemillis(); for(int i = 0; i <10000; i ++)sb.append(string.valueof(i)); endtime = system.currenttimemillis(); system.out.println( "実行時間:" +(endtime-begintime)); }} public class appendStringTest {public static void main(string [] args){string text = ""; long begintime = system.currenttimemillis(); for(int i = 0; i <10000; i ++)text = text+i; long endtime = system.currenttimemillis(); system.out.println( "実行時間:"+(endtime-begintime)); stringbuilder sb = new StringBuilder( ""); begintime = system.currenttimemillis(); for(int i = 0; i <10000; i ++)sb.append(string.valueof(i)); endtime = system.currenttimemillis(); system.out.println( "実行時間:"+(endtime-begintime)); }}このコードは出力します:
実行時間:3188
実行時間:15
StringBuilderは、J2SE1.5.0にのみ追加された新しいクラスです。以前のバージョンに同じ要件がある場合、java.util.stringbufferが使用されます。実際、StringBuilderは、StringBufferと同じ動作インターフェイスを持つように設計されています。 StringBuilderが同期の問題を処理しないため、スタンドアロンの非スレッド状況でStringBuilderを使用すると、効率が向上します。 StringBufferは同期の問題を処理します。 StringBuilderが複数のスレッドの下で操作される場合、代わりにStringBufferを使用して、オブジェクトに同期の問題を単独で管理できるようにする必要があります。
JavaでのStringBuilderの使用に関する上記の簡単な分析は、私があなたと共有するすべてのコンテンツです。私はそれがあなたに参照を与えることができることを願っています、そしてあなたがwulin.comをもっとサポートできることを願っています。