文字列を変更する場合は、StringBuffer クラスと StringBuilder クラスを使用する必要があります。
String クラスとは異なり、StringBuffer クラスと StringBuilder クラスのオブジェクトは、新しい未使用のオブジェクトを作成することなく、何度でも変更できます。
StringBuilder クラスは Java 5 で提案されました。StringBuffer との最大の違いは、StringBuilder がこのメソッドはスレッド セーフではありません (スレッド セーフとは、マルチスレッドがアクセスするときにロック メカニズムが使用されることを意味します。スレッドがこのクラスの特定のデータにアクセスすると、そのデータは保護され、スレッドが読み取りを完了するまで他のスレッドはアクセスできません。他のスレッドでも使用できます。データの不整合やデータ汚染は発生しません。スレッドアンセーフとは、データアクセス保護が提供されていないことを意味し、複数のスレッドが連続してデータを変更し、結果のデータがダーティデータになる可能性があります。
StringBuilder は StringBuffer に比べて速度に優れているため、ほとんどの場合 StringBuilder クラスを使用することをお勧めします。ただし、アプリケーションでスレッド セーフが必要な場合は、StringBuffer クラスを使用する必要があります。
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(" test"); sBuffer.append(" String Buffer"); System.out.println(sBuffer); } }
上記の例のコンパイルと実行結果は次のとおりです。
test String Buffer
StringBuffer クラスでサポートされる主なメソッドは次のとおりです。
シリアルナンバー | メソッドの説明 |
---|---|
1 | public StringBuffer append(String s) 指定された文字列をこの文字シーケンスに追加します。 |
2 | public StringBuffer reverse() この一連の文字を逆の形式に置き換えます。 |
3 | public delete(int start, int end) このシーケンスの部分文字列から文字を削除します。 |
4 | public insert(int offset, int i) int 引数の文字列表現をこのシーケンスに挿入します。 |
5 | replace(int start, int end, String str) このシーケンスの部分文字列内の文字を、指定されたString 内の文字に置き換えます。 |
次のリストのメソッドは、String クラスのメソッドと似ています。
シリアルナンバー | メソッドの説明 |
1 | int Capacity() は現在の容量を返します。 |
2 | char charAt(int index) このシーケンス内の指定されたインデックスにあるchar 値を返します。 |
3 | void ensureCapacity(int minimumCapacity) 容量が指定された最小値以上であることを保証します。 |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) このシーケンスの文字をターゲット文字配列dst にコピーします。 |
5 | int IndexOf(String str) 文字列内で指定された部分文字列が最初に出現するインデックスを返します。 |
6 | int IndexOf(String str, int fromIndex) 指定されたインデックスから開始して、文字列内で指定された部分文字列が最初に出現するインデックスを返します。 |
7 | int lastIndexOf(String str) 指定された部分文字列の右端の文字列内のインデックスを返します。 |
8 | int lastIndexOf(String str, int fromIndex) 指定された部分文字列が最後に出現する文字列内のインデックスを返します。 |
9 | int length() は文字数で長さを返します。 |
10 | void setCharAt(int index, char ch) 指定されたインデックスの文字をch に設定します。 |
11 | void setLength(int newLength) 文字シーケンスの長さを設定します。 |
12 | CharSequence subSequence(int start, int end) このシーケンスのサブシーケンスである新しい文字シーケンスを返します。 |
13 | String substring(int start) この文字シーケンスに現在含まれている文字サブシーケンスを含む新しいString を返します。 |
14 | String substring(int start, int end) このシーケンスに現在含まれている文字のサブシーケンスを含む新しいString を返します。 |
15 | String toString() このシーケンス内のデータの文字列表現を返します。 |