0。StringBuilderタイプの紹介
StringBuilderタイプは、可変文字列タイプです。 StringBuilderタイプのAPIは、基本的にStringBufferタイプのAPIと同じです。唯一の違いは、StringBuilderの使用が単一のスレッドにあると想定していることです。言い換えれば、StringBuilderはスレッドインセンスです。 StringBuilderをインスタンス化する場合、通常はデフォルトで容量のサイズを設定します。通常、文字列パラメーター+16の長さです。 StringBuilderは、抽象クラスの抽象的な抽象的なビルダーを継承し、抽象クラスは文字配列を使用して内部的に実装され、配列を動的に拡張できます。 StringBuilderクラスによって提供される一般的な方法には、append()、insert()、facter()、deletecharat()、indexof()、reverse()、toString()およびその他のメソッドには、ストリングの追加、削除、変更、検索などの基本的な関数を実現できます。
パッケージdate0812.demo1; public class test3 {public static void main(string [] args){stringbuilder stringbuilder = new StringBuilder( "Eclipse"); // stringbuilder = stringbuilder.append( "ソフトウェア");を追加します。 //容量int c = stringbuilder.capacity(); // flip stringbuilder = stringbuilder.reverse(); System.out.println(c); system.out.println(stringbuilder); }}実行結果:
23erawtfos espilce
1。StringBuilderメソッド
StringBuilderは可変文字シーケンスです。 AbstractStringBuilderから継承し、CharSequenceインターフェイスを実装します。
StringBufferは、AbstractStringBuilderから継承されたサブクラスです。ただし、StringBuilderとStringBufferは異なります。前者は非スレッドセーフであり、後者はスレッドセーフです。
StringBuilderとCharSequenceの関係図は次のとおりです。
StringBuilderメソッドのリスト:
StringBuilder()StringBuilder(int capities)StringBuilder(CharSequence seq)StringBuilder(String Str)StringBuilder Append(Float F)StringBuilder Append(Double D)StringBuilder Append(Boolean B)StringBuilder Append(Int I)StringBuilder Adpend(Long L)StringBuilder(Char C)StringBuilder(Char C)StringBuilder Adpend(Long L)追加(char [] str、int offset、int len)stringbuilder append(string stringbuilder append(object obj)stringbuilder append(stringbuffer sb)stringbuilder append(charecence csq、int start、int start、ind end)indcodepoint(int cordepoint(int codepoint(int codepoint()char)append(charecence csq、int start、int start、intepoint(int codepoint()) index)int codepointbefore(int index)int codepointcount(int start、int end)stringbuilder delete(int start、int end)stringbuilder deletecharat(int index)void ensurecapacity(int start、int、char [] dst、int dststart)int int int inted、interin Boolean B)StringBuilder Insert(int offset、int i)stringbuilder insert(int offset、long l)stringbuilder insert(int offset、float f)stringbuilder insert(int offset、double d)stringbuilder insert(int offset、char c)stringbuilder insert(int offsset、char [] int intersset(int int inter) strlen)stringbuilder insert(int offset、string str)stringbuilder insert(int offset、object obj)stringbuilder insert(int offset、charsequence s)stringbuilder insert(int offset、charsequence s、int start、int end)int lastindexof(string string)int lastindexof(int int int length(int start)int lengthing() CodePointOffset)StringBuilderの交換(Int Start、Int End、String String)StringBuilder Reverse()void setCharat(int index、char ch)void setlength(int start、int end)string substring(int start)string substring(int start、int end)string string tostring()void trimtosize()void
AbstractStringBuilderとStringBuilderのソースコードは長すぎるため、ソースコードはここにリストされません。興味のある読者はそれを自分で勉強することができます。
2。StringBuilderAPIテストコード
2.1 StringBuilderに関連するAPIを挿入(挿入)
ソースコードは次のとおりです(StringBuilderInserttest.java):
/** StringBuilder } / *** stringbuilder stringbuilder sbuilder = new StringBuilder(); //位置0 sbuilder.insert(0、new char [] {'a'、 'b'、 'c'、 'd'、 'e'})に文字配列を挿入します。 //位置0.0に文字配列を挿入する文字配列の開始位置を表し、3はsbuilder.insert(0、new char [] {'a'、 'b'、 'c'、 'd'、 'e'}、0、3)を表します。 // float sbuilder.insert(0、1.414f)を挿入します。 // double sbuilder.insert(0、3.14159d); // boolean sbuilder.insert(0、true)を挿入します。 // char sbuilder.insert(0、 '/n'); // int sbuilder.insert(0、100)を挿入します。 // long sbuilder.insert(0、14159d); // boolean sbuilder.insert(0、true)を挿入します。 // char sbuilder.insert(0、 '/n'); // int sbuilder.insert(0、100)を挿入します。 // long sbuilder.insert(0、12345l)を挿入します。 // stringbuilderオブジェクトsbuilder.insert(0、new StringBuilder( "StringBuilder"))を挿入します。 //位置0のStringBuilderオブジェクトを挿入します。6は、位置0に挿入されたオブジェクトの開始位置(を含む)を表します。 // StringBufferオブジェクトを位置0に挿入します。SBUILDER.INSERT(0、new StringBuffer( "StringBuffer")); //位置0にstringbufferオブジェクトを挿入します。6は、位置0に挿入されたオブジェクトの開始位置(を含む)を表します。 // sbuilder.insert(0、 "string")に文字列オブジェクトを挿入します。 //位置0.1に文字列オブジェクトを挿入します。1は、位置0に挿入されたオブジェクトの開始位置(を含む)を表します。 sbuilder.insert(0、 '/n'); //位置0にオブジェクトオブジェクトを挿入します。ここでハッシュマップを例としてhashmap map = new Hashmap(); map.put( "1"、 "one"); map.put( "2"、 "2"); map.put( "3"、 "3"); sbuilder.insert(0、map); System.out.printf( "%s/n/n"、sbuilder); }}実行結果:
--------------------------------- testinSertapis ---------------------------------------------------------------------------------------------- 2 = 2、2、1 = One} 12345StringBufferBufferBufferStringBuilder12345100TRUE3.141591.41414ABCABCDE
2.2 StringBuilderの関連APIを追加(追加)
ソースコードは次のとおりです(StringBuilderAppendTest.java):
/** STRINGBUILDER的append()示例 * * @author skywang */Import java.util.hashmap; public class stringbuilderappendtest {public static void main(string [] args){testappendapis(); } / *** stringbuilder的append()示例* / private static void testAppendapis(){system.out.println( "-----------------------------------------------------------------------------------------------------------"); stringbuilder sbuilder = new StringBuilder(); //文字配列sbuilder.append(new char [] {'a'、 'b'、 'c'、 'd'、 'e'}); //文字配列を追加します。 0文字配列の開始位置を示します。 // float sbuilder.append(1.414f)を追加します。 // double sbuilder.append(3.14159d)を追加します。 // boolean sbuilder.append(true); // char sbuilder.append( '/n'); // int sbuilder.append(100)を追加します。 // long sbuilder.append(12345l)を追加します。 // stringbuilderオブジェクトsbuilder.append(new StringBuilder( "StringBuilder")); // StringBuilderオブジェクトを追加します。 6は、追加されたオブジェクトの開始位置(を含む)を示します。13はエンド位置(除く)sbuilder.append(new StringBuilder( "StringBuilder")、6、13)です。 // stringbufferオブジェクトを追加します。 sbuilder.append(new StringBuffer( "StringBuffer")); // stringbufferオブジェクトを追加します。 6は、追加されたオブジェクトの開始位置(を含む)を示します。12はエンド位置(除く)sbuilder.append(new StringBuffer( "StringBuffer")、6、12)です。 //文字列オブジェクトを追加します。 sbuilder.append( "string"); //文字列オブジェクトを追加します。 1は、追加されたオブジェクトの開始位置(を含む)を示します。6はエンド位置(除く)sbuilder.append( "0123456789"、1、6)です。 sbuilder.append( '/n'); //オブジェクトオブジェクトを追加します。ここでは、ハッシュマップをhashmap map = new Hashmap()の例として使用します。 map.put( "1"、 "one"); map.put( "2"、 "2"); map.put( "3"、 "3"); sbuilder.append(マップ); sbuilder.append( '/n'); // sbuilder.appendCodePoint(0x5b57)をエンコードするUnicodeを追加します。 // 0x5b57は、sbuilder.appendcodepoint(0x7b26)をエンコードするUnicodeです。 // 0x7b26は、sbuilder.appendcodepoint(0x7f16)をエンコードするUnicodeです。 // 0x7f16は、sbuilder.appendcodepoint(0x7801)をエンコードする「エンコードされた」ユニコードです。 // 0x7801は、「エンコードされた」UnicodeエンコードSystem.out.printf( "%s/n/n"、sbuilder)です。 }}実行結果:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.3 StringBuilderの関連するAPIを交換します
ソースコードは次のとおりです(StringBuilderReplacetest.java):
/** * stringbuilder的置換()示例 * * @author skywang */import java.util.hashmap; public class stringbuilderreplacetest {public static void main(string [] args){testReplaceapis(); } / *** stringbuilder的eplace()示例* / private static void testReplaceapis(){system.out.println( "-------------------------------------------------------------------------------------"); stringbuilder sbuilder; sbuilder = new StringBuilder( "0123456789"); sbuilder.replace(0、3、 "abcde"); system.out.printf( "sbuilder =%s/n"、sbuilder); sbuilder = new StringBuilder( "0123456789"); sbuilder.reverse(); system.out.printf( "sbuilder =%s/n"、sbuilder); sbuilder = new StringBuilder( "0123456789"); sbuilder.setcharat(0、 'm'); system.out.printf( "sbuilder =%s/n"、sbuilder); System.out.println(); }}実行結果:
------------------------------- TestReplaceapis ------------------------------------------------- sbuilder = abcde3456789SBuilder = 9876543210SBUILDER = M123456789
2.4 StringBuilderの関連APIを削除(削除)
ソースコードは次のとおりです(StringBuilderDeletetest.java):
/** STRINGBUILDER的DELETE()示例 * * @Author Skywang */Import java.util.hashmap; public class stringbuilderdeletetest {public static void main(string [] args){testdeleteapis(); } / *** StringBuilder stringbuilder sbuilder = new StringBuilder( "0123456789"); //位置0で文字を削除すると、残りの文字は「123456789」です。 sbuilder.deletecharat(0); //位置3(を含む)と位置6(除く)の間の文字を削除し、残りの文字は「123789」です。 sbuilder.delete(3,6); // sb string str1 = sbuilder.substring(1)の位置1から文字列を取得します。 // SB string str2 = sbuilder.substring(3、5)の位置3(を含む)から位置5(除外)に文字列を取得します。 // SB string str3 =(string)sbuilder.subsequence(3、5)の位置3(を含む)から位置5(除外)に文字列を取得します。 System.out.Printf( "SBUilder =%S/NSTR1 =%S/NSTR2 =%S/NSTR3 =%S/N"、SBUILDER、STR1、STR2、STR3); }}実行結果:
------------------------------ TestDeleteapis ---------------------------------------------------------------------------- 123789STR1 = 23789STR2 = 78STR3 = 78
2.5 StringBuilderのインデックス関連API
ソースコードは次のとおりです(stringbuilderindextest.java):
/** * StringBuilderのインデックス関連APIデモンストレーション * * @Author Skywang */Import java.util.hashmap; public class stringbuilderindextest {public static void main(string [] args){testindexapis(); } / *** stringbuilderのインデックス関連APIデモンストレーション* / private static void testindexapis(){ System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- StringBuilder sbuilder = new StringBuilder( "Abcabcabcabcabcabcabc"); sbuilder.indexof( "bc")); // 2から前から、「bc」が初めて登場する場所を見つけます。 「bc」が初めてsystem.out.printf( "% - 30s =%d/n"、 "sbuilder.lastindexof(/" bc/")"、sbuilder.lastindexof( "bc")); //4。前方へ、「bc」が初めてsystem.out.printf( "%-30s =%d/n"、 "sbuilder.lastindexof(/" bc/"、4)"、sbuilder.lastindexof( "bc"、4)); System.out.println(); }}実行結果:
---------------------------------------------------------------------------------------------------------------------------- sbuilder = abcabcabcabcabcabcabcabcsbuilder.indexof( "bc")= 1sbuilder.indexof( "bc"、5)= 22sbuilder.lastindexof 22SBuilder.lastIndexof( "BC"、4)= 4
2.6 StringBuilder残りAPI
ソースコードは次のとおりです(StringBuildertertest.java):
/** * StringBuilderのその他のAPI例 * * @Author Skywang */Import java.util.hashmap; public class stringbuildertertest {public static void main(string [] args){testotherapis(); } / *** stringbuilderのその他のAPI例* / private static void testotherapis(){ System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ new stringbuilder(0123456789 ") 0); int i = 0; i ++)system.out.printf(i、carr [i]);実行結果:
-------------------------------------------------------------------------------------------------------------------------------------------- 26C = 6Carr [0] = 3 Carr [1] = 4 Carr [2] = 5 Carr [3] = 6
3。StringBuilder完全な例
次の例は、上記の例を統合する完全なStringBuilderデモプログラムです。ソースコードは次のとおりです(StringBuilderTest.java):
/** * StringBuilderデモプログラム * * @Author Skywang */Import java.util.hashmap; public class stringbuildertest {public static void main(string [] args){testotherapis(); testindexapis(); testinsertapis(); testAppendApis(); testReplaceapis(); testdeleteapis(); } / *** StringBuilderのその他のAPI例* / private static void testotherapis(){system.out.println( "-------------------------------------------------------------------------------------------------------"); stringbuilder sbuilder = new StringBuilder( "0123456789"); int cap = sbuilder.capacity(); System.out.printf( "cap =%d/n"、cap); char c = sbuilder.charat(6); System.out.printf( "c =%c/n"、c); char [] carr = new char [4]; sbuilder.getchars(3、7、carr、0); for(int i = 0; i <carr.length; i ++)system.out.printf( "carr [%d] =%c"、i、carr [i]); System.out.println(); System.out.println(); } / *** StringBuilder stringbuilder sbuilder = new StringBuilder( "abcabcabcabcabcabcabcabc"); system.out.printf( "sbuilder =%s/n"、sbuilder); //1。前後に、「bc」が初めてsystem.out.printf( "% - 30s =%d/n"、 "sbuilder.indexof(/" bc/")"、sbuilder.indexof( "bc")); // 2。位置5から前後に、「bc」が初めてsystem.out.printf( "% - 30s =%d/n"、 "sbuilder.indexof(/" bc/"、5)"、sbuilder.indexof( "bc"、5)); //後方から正面へ、「bc」が初めてsystem.out.printf( "% - 30s =%d/n"、 "sbuilder.lastindexof(/" bc/")"、sbuilder.lastindexof( "bc")); //4。前方へ、「bc」が初めてsystem.out.printf( "%-30s =%d/n"、 "sbuilder.lastindexof(/" bc/"、4)"、sbuilder.lastindexof( "bc"、4)); System.out.println(); } / *** stringbuilder的eplace()示例* / private static void testReplaceapis(){system.out.println( "-------------------------------------------------------------------------------------"); stringbuilder sbuilder; sbuilder = new StringBuilder( "0123456789"); sbuilder.replace(0、3、 "abcde"); system.out.printf( "sbuilder =%s/n"、sbuilder); sbuilder = new StringBuilder( "0123456789"); sbuilder.reverse(); system.out.printf( "sbuilder =%s/n"、sbuilder); sbuilder = new StringBuilder( "0123456789"); sbuilder.setcharat(0、 'm'); system.out.printf( "sbuilder =%s/n"、sbuilder); System.out.println(); } / *** stringbuilder delete()example* / private static void testdeleteapis(){ System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- sbuilder.deletecharat(0)。 str2 = sbuilder.substring(3、5); System.out.Printf( "SBUilder =%S/NSTR1 =%S/NSTR2 =%S/NSTR3 =%S/N"、SBUILDER、STR1、STR2、STR3); } / *** stringbuilder insert()例* / private static void testinsertapis(){ System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0は、文字配列の開始位置を表しますsbuilder.insert(0、sbuilder.int); // char sbuilder.insert(0、 '/n'); // int sbuilder.insert(0、100)を挿入します。 // long sbuilder.insert(0、12345l)を挿入します。 // stringbuilderオブジェクトsbuilder.insert(0、new StringBuilder( "StringBuilder"))を挿入します。 //位置0のStringBuilderオブジェクトを挿入します。6は、位置0に挿入されたオブジェクトの開始位置(を含む)を表します。 // StringBufferオブジェクトを位置0に挿入します。SBUILDER.INSERT(0、new StringBuffer( "StringBuffer")); //位置0にstringbufferオブジェクトを挿入します。6は、位置0に挿入されたオブジェクトの開始位置(を含む)を表します。 // sbuilder.insert(0、 "string")に文字列オブジェクトを挿入します。 //位置0.1に文字列オブジェクトを挿入します。1は、位置0に挿入されたオブジェクトの開始位置(を含む)を表します。 sbuilder.insert(0、 '/n'); //オブジェクトオブジェクトを位置0に挿入します。 map.put( "1"、 "one"); map.put( "2"、 "2"); map.put( "3"、 "3"); sbuilder.insert(0、map); System.out.printf( "%s/n/n"、sbuilder); } / *** stringbuilder的append()示例* / private static void testappendapis(){system.out.println( "--------------------------------------------------------------------------------------------------------"); stringbuilder sbuilder = new StringBuilder(); //文字配列sbuilder.append(new char [] {'a'、 'b'、 'c'、 'd'、 'e'}); //文字配列を追加します。 0文字配列の開始位置を示します。 // float sbuilder.append(1.414f)を追加します。 // double sbuilder.append(3.14159d)を追加します。 // boolean sbuilder.append(true); // char sbuilder.append( '/n'); // int sbuilder.append(100)を追加します。 // long sbuilder.append(12345l)を追加します。 // stringbuilderオブジェクトsbuilder.append(new StringBuilder( "StringBuilder")); // StringBuilderオブジェクトを追加します。 6は、追加されたオブジェクトの開始位置(を含む)を示します。13はエンド位置(除く)sbuilder.append(new StringBuilder( "StringBuilder")、6、13)です。 // stringbufferオブジェクトを追加します。 sbuilder.append(new StringBuffer( "StringBuffer")); // stringbufferオブジェクトを追加します。 6は、追加されたオブジェクトの開始位置(を含む)を示します。12はエンド位置(除く)sbuilder.append(new StringBuffer( "StringBuffer")、6、12)です。 //文字列オブジェクトを追加します。 sbuilder.append( "string"); //文字列オブジェクトを追加します。 1は、追加されたオブジェクトの開始位置(を含む)を示します。6はエンド位置(除く)sbuilder.append( "0123456789"、1、6)です。 sbuilder.append( '/n'); //オブジェクトオブジェクトを追加します。ここでは、ハッシュマップをhashmap map = new Hashmap()の例として使用します。 map.put( "1"、 "one"); map.put( "2"、 "2"); map.put( "3"、 "3"); sbuilder.append(マップ); sbuilder.append( '/n'); // sbuilder.appendCodePoint(0x5b57)をエンコードするUnicodeを追加します。 // 0x5b57は、sbuilder.appendcodepoint(0x7b26)をエンコードするUnicodeです。 // 0x7b26は、sbuilder.appendcodepoint(0x7f16)をエンコードするUnicodeです。 // 0x7f16は、sbuilder.appendcodepoint(0x7801)をエンコードする「エンコードされた」ユニコードです。 // 0x7801は、「エンコードされた」UnicodeエンコードSystem.out.printf( "%s/n/n"、sbuilder)です。 }}