1. 文字列の変更
Java では、文字列は不変オブジェクトです。これは、String クラスを高度に最適化し、どこでも使用できるようにするために行われました。たとえば、HashMap コレクションのキーとして使用する場合は、不変型のみが推奨されます。
ただし、プログラマがクラスが可変である方が便利であると考える状況がよく発生しますString
。彼らは、メソッドが呼び出されるたびに新しい部分文字列を作成しないクラスを望んでいます。
さて、非常に大きな文字列があり、その文字列の末尾に頻繁に何かを追加する必要があるとします。この場合、文字のコレクション ( ArrayList<Character>
) であっても、String オブジェクトを常に再作成して連結するより効率的です。
変更可能な String のような型が Java 言語に追加されたのはまさにこのためです。と呼ばれますStringBuilder
。
オブジェクトの作成
既存の文字列に基づいてオブジェクトを作成するにはStringBuilder
、次のようなステートメントを実行する必要があります。
StringBuilder name = new StringBuilder(string);
空の可変文字列を作成するには、次のようなステートメントを使用する必要があります。
StringBuilder name = new StringBuilder();
メソッドのリスト
このStringBuilder
クラスには 24 個の便利なメソッドがあります。最も重要なものは次のとおりです。
方法 | 説明 |
---|---|
|
渡されたオブジェクトを文字列に変換し、現在の文字列に追加します。 |
|
渡されたオブジェクトを文字列に変換し、現在の文字列に挿入します。 |
|
start..end 間隔で指定された文字列の部分を、渡された文字列に置き換えます。 |
|
指定されたインデックスを持つ文字を文字列から削除します |
|
指定された間隔内の文字を文字列から削除します |
|
現在の文字列内の部分文字列を検索します |
|
現在の文字列内の部分文字列を末尾から検索します。 |
|
渡されたインデックスにある文字列内の文字を返します。 |
|
指定された間隔で定義された部分文字列を返します。 |
|
現在の文字列を反転します。 |
|
指定されたインデックスの文字を渡された文字に変更します |
|
文字列の長さを文字数で返します。 |
それぞれの方法について簡単に説明します
2. メソッドの説明:
文字列に追加する
可変文字列 ( StringBuilder
) に何かを追加するには、append()
メソッドを使用します。例:
コード | 説明 |
---|---|
|
|
標準文字列への変換
オブジェクトを String オブジェクトに変換するにはStringBuilder
、そのメソッドを呼び出すだけですtoString()
。例
コード | 出力 |
---|---|
|
|
キャラクターを削除するにはどうすればよいですか?
可変文字列内の文字を削除するには、deleteCharAt()
メソッドを使用する必要があります。例:
コード | 出力 |
---|---|
|
|
文字列の一部を別の文字列に置き換えるにはどうすればよいですか?
このためには方法がありますreplace(int begin, int end, String str)
。例:
コード | 出力 |
---|---|
|
|
3. 文字列を扱う便利な例
文字列を反転するにはどうすればよいですか?
これを行うには特別な方法があります — reverse()
; 例:
コード | 出力 |
---|---|
|
|
StringBuffer
クラス
別のクラス StringBuffer がありますが、これはこのクラスの類似品ですStringBuilder
が、そのメソッドはsynchronized
修飾子でマークされています。これは、StringBuffer
オブジェクトに複数のスレッドから同時にアクセスできることを意味します。
ただし、 よりもはるかに遅いですStringBuilder
。Java マルチスレッド化クエストでマルチスレッド化を積極的に検討し始めるときに、このクラスが必要になる場合があります。
GO TO FULL VERSION