Java の StringBuilder クラスと例
文字列ビルダー Java では、可変の文字シーケンスを表します。 Java の String クラスは不変の文字シーケンスを作成するため、StringBuilder クラスは、変更可能な文字シーケンスを作成する String クラスの代替手段を提供します。 StringBuilder の機能は StringBuffer クラスとよく似ており、どちらも変更可能な文字シーケンスを作成することで String クラスの代替手段を提供します。ただし、StringBuilder クラスは、同期に基づいて StringBuffer クラスとは異なります。 StringBuilder クラスは同期の保証を提供しませんが、StringBuffer クラスは同期を保証します。したがって、このクラスは、(通常の場合のように) StringBuffer が単一のスレッドによって使用されていた場所で、StringBuffer のドロップイン置換として使用するように設計されています。可能であれば、ほとんどの実装ではこのクラスの方が高速であるため、StringBuffer よりもこのクラスを優先して使用することをお勧めします。 StringBuilder のインスタンスは、複数のスレッドで使用するのは安全ではありません。このような同期が必要な場合は、StringBuffer を使用することをお勧めします。 String Builder はスレッドセーフではありませんが、String バッファーに比べてパフォーマンスが高くなります。
クラス階層は次のとおりです。
java.lang.Object ↳ java.lang ↳ Class StringBuilder
構文:
public final class StringBuilder extends Object implements Serializable, CharSequence
Java StringBuilder クラスのコンストラクター
- StringBuilder(): 文字を含まず、初期容量が 16 文字の文字列ビルダーを構築します。 StringBuilder(int Capacity): 文字を含まず、capacity 引数で指定された初期容量を含む文字列ビルダーを構築します。 StringBuilder(CharSequence seq): 指定された CharSequence と同じ文字を含む文字列ビルダーを構築します。 StringBuilder(String str): 指定された文字列の内容に初期化された文字列ビルダーを構築します。
以下は、Java で StringBuilder を説明するサンプル プログラムです。
ジャワ
// Java Code to illustrate StringBuilder> import> java.util.*;> import> java.util.concurrent.LinkedBlockingQueue;> public> class> GFG1 {> > public> static> void> main(String[] argv)> throws> Exception> > {> > // Create a StringBuilder object> > // using StringBuilder() constructor> > StringBuilder str => new> StringBuilder();> > str.append(> 'GFG'> );> > // print string> > System.out.println(> 'String = '> + str.toString());> > // create a StringBuilder object> > // using StringBuilder(CharSequence) constructor> > StringBuilder str1> > => new> StringBuilder(> 'AAAABBBCCCC'> );> > // print string> > System.out.println(> 'String1 = '> + str1.toString());> > // create a StringBuilder object> > // using StringBuilder(capacity) constructor> > StringBuilder str2 => new> StringBuilder(> 10> );> > // print string> > System.out.println(> 'String2 capacity = '> > + str2.capacity());> > // create a StringBuilder object> > // using StringBuilder(String) constructor> > StringBuilder str3> > => new> StringBuilder(str1.toString());> > // print string> > System.out.println(> 'String3 = '> + str3.toString());> > }> }> |
出力
String = GFG String1 = AAAABBBCCCC String2 capacity = 10 String3 = AAAABBBCCCC
Java StringBuilder のメソッド
StringBuilder の追加(X x) : このメソッドは、X 型引数の文字列表現をシーケンスに追加します。
- StringBuilder appendCodePoint(int codePoint) : このメソッドは、codePoint 引数の文字列表現をこのシーケンスに追加します。
- int 容量() : このメソッドは現在の容量を返します。
- char charAt(int インデックス) : このメソッドは、このシーケンス内の指定されたインデックスにある char 値を返します。 IntStream chars() : このメソッドは、このシーケンスから char 値をゼロ拡張した int のストリームを返します。
- int codePointAt(int インデックス) : このメソッドは、指定されたインデックスの文字 (Unicode コード ポイント) を返します。
- int codePointBefore(int インデックス) : このメソッドは、指定されたインデックスの前の文字 (Unicode コード ポイント) を返します。
- int codePointCount(int beginIndex, int endIndex) : このメソッドは、このシーケンスの指定されたテキスト範囲内の Unicode コード ポイントの数を返します。 IntStream codePoints() : このメソッドは、このシーケンスからコード ポイント値のストリームを返します。
- StringBuilder delete(int start, int end) : このメソッドは、このシーケンスの部分文字列内の文字を削除します。 StringBuilder deleteCharAt(int index) : このメソッドは、このシーケンス内の指定された位置にある文字を削除します。
- void ensureCapacity(int minimumCapacity) : この方法では、容量が指定された最小値以上であることが保証されます。
- void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) : このメソッドの文字は、このシーケンスから宛先の文字配列 dst にコピーされます。
- intindexOf() : このメソッドは、この文字列内で指定された部分文字列が最初に出現するインデックスを返します。 StringBuilder insert(int offset, boolean b) : このメソッドは、ブール代替引数の文字列表現をこのシーケンスに挿入します。 StringBuilder insert() : このメソッドは、char 引数の文字列表現をこのシーケンスに挿入します。
- int lastIndexOf() : このメソッドは、指定された部分文字列が最後に出現した文字列内のインデックスを返します。
- int の長さ() : このメソッドは長さ (文字数) を返します。 int offsetByCodePoints(int index, int codePointOffset) : このメソッドは、指定されたインデックスから codePointOffset コード ポイントによってオフセットされた、このシーケンス内のインデックスを返します。
- StringBuilder replace(int start, int end, String str) : このメソッドは、このシーケンスの部分文字列内の文字を、指定された文字列内の文字に置き換えます。
- StringBuilder reverse() : このメソッドは、この文字シーケンスを逆のシーケンスに置き換えます。
- void setCharAt(int インデックス, char ch) : このメソッドでは、指定されたインデックスの文字が ch に設定されます。
- void setLength(int newLength) : このメソッドは文字シーケンスの長さを設定します。
- CharSequence subSequence(int start, int end) : このメソッドは、このシーケンスのサブシーケンスである新しい文字シーケンスを返します。
- 文字列の部分文字列() : このメソッドは、この文字シーケンスに現在含まれている文字のサブシーケンスを含む新しい String を返します。
- 文字列 toString() : このメソッドは、このシーケンス内のデータを表す文字列を返します。
- void トリムToSize() : このメソッドは、文字シーケンスに使用されるストレージを削減しようとします。
例:
ジャワ
// Java code to illustrate> // methods of StringBuilder> import> java.util.*;> import> java.util.concurrent.LinkedBlockingQueue;> public> class> GFG1 {> > public> static> void> main(String[] argv)> > throws> Exception> > {> > // create a StringBuilder object> > // with a String pass as parameter> > StringBuilder str> > => new> StringBuilder(> 'AAAABBBCCCC'> );> > // print string> > System.out.println(> 'String = '> > + str.toString());> > // reverse the string> > StringBuilder reverseStr = str.reverse();> > // print string> > System.out.println(> 'Reverse String = '> > + reverseStr.toString());> > // Append ', '(44) to the String> > str.appendCodePoint(> 44> );> > // Print the modified String> > System.out.println(> 'Modified StringBuilder = '> > + str);> > // get capacity> > int> capacity = str.capacity();> > // print the result> > System.out.println(> 'StringBuilder = '> + str);> > System.out.println(> 'Capacity of StringBuilder = '> > + capacity);> > }> }> |
出力
String = AAAABBBCCCC Reverse String = CCCCBBBAAAA Modified StringBuilder = CCCCBBBAAAA, StringBuilder = CCCCBBBAAAA, Capacity of StringBuilder = 27
StringBuilder は、文字列を操作するために使用される Java の別のクラスです。 StringBuffer と同様、これは、それが表す文字列の内容を変更できる可変クラスです。ただし、StringBuilder はスレッドセーフではないため、マルチスレッド環境では使用しないでください。
Java で StringBuilder を使用する方法の例をいくつか示します。
ジャワ
public> class> StringBuilderExample {> > public> static> void> main(String[] args) {> > StringBuilder sb => new> StringBuilder();> > sb.append(> 'Hello'> );> > sb.append(> ' '> );> > sb.append(> 'world!'> );> > System.out.println(sb.toString());> // Output: 'Hello world!'> > > sb.insert(> 6> ,> 'beautiful '> );> > System.out.println(sb.toString());> // Output: 'Hello beautiful world!'> > > sb.reverse();> > System.out.println(sb.toString());> // Output: '!dlrow lufituaeb olleH'> > }> }> |
出力
Hello world! Hello beautiful world! !dlrow lufituaeb olleH