Java StringBufferクラスの詳細:文字列の追加、反転、削除、置換

5510 ワード

Javaでは、Stringクラスによる文字列の作成と処理に加えて、StringBufferクラスを使用して文字列を処理することもできます.StringBufferクラスはStringクラスよりも効率的に文字列を処理できます.StringBufferクラスは可変文字列クラスなので、StringBufferクラスのオブジェクトを作成して文字列の内容を自由に変更できます.各StringBufferクラスのオブジェクトは、指定された容量の文字列を格納できます.文字列の長さがStringBufferクラスのオブジェクトの容量を超えると、そのオブジェクトの容量は自動的に拡大します.
StringBufferクラスの作成
StringBufferクラスでは、次のように文字列を作成する3つの構造方法が用意されています.
  • StringBuffer()は、空の文字列バッファを構築し、16文字の容量に初期化します.
  • StringBuffer(int length)は、空の文字列バッファを作成し、指定された長さのlengthの容量に初期化します.
  • StringBuffer(String str)は文字列バッファを作成し、その内容を指定した文字列コンテンツstrに初期化し、文字列バッファの初期容量は16に文字列strの長さを加えた.

  • StringBufferクラスを使用するコンストラクション関数の例は次のとおりです.
     
  • //空の文字列バッファを定義し、16文字の容量
  • を含む
  • StringBuffer str1=new StringBuffer();
  •  
  • //10文字容量の文字列バッファ
  • を定義
  • StringBuffer str2=new StringBuffer(10);
  •  
  • //(16+4)を含む文字列バッファを定義し、「青春無悔」は4文字
  • です.
  • StringBuffer str 3=new StringBuffer(「青春無悔」)
  • /*
  • *出力文字列の容量サイズ
  • *capacity()メソッドは、文字列の容量サイズ
  • を返します.
  • */
  • System.out.println(str1.capacity());//出力16
  • System.out.println(str2.capacity());//出力10
  • System.out.println(str3.capacity());//出力20
  • 上記のコードは、3つのStringBufferオブジェクトstr 1、str 2、str 3を宣言し、それぞれ初期化します.str 1.capacity()は、str 1の容量を表示し、str 2およびstr 3を同様に容量表示する操作に使用される.
    追加文字列
    StringBufferクラスのappend()メソッドは、既存のStringBufferオブジェクトに文字列を追加するために使用されます.このメソッドの構文フォーマットは次のとおりです.
    StringBuffer   .append(String str)

    この方法は、現在のStringBufferオブジェクトの末尾にコンテンツを追加する役割を果たし、文字列の接続に似ています.このメソッドを呼び出すと、StringBufferオブジェクトの内容も変更されます.たとえば、次のようになります.
     
  • StringBuffer buffer=new StringBuffer("hello,");//StringBufferオブジェクト
  • を作成
  • String str="World!";
  • buffer.append(str);//StringBufferオブジェクトにstr文字列
  • を追加
  • System.out.println(buffer.substring(0));//出力:Hello,World!

  • 例1
    新学期ごとに、学校は今学期の課程に対して必修課程をリストします.Javaプログラムを作成し、ユーザーがコンソールに5つの必修科目名を循環入力し、この5つの名前を接続し、最後に接続後の文字列を出力するように要求します.コードは次のとおりです.
     
  • import java.util.Scanner;
  • public class Testl9
  • {
  • public static void main(String[] args)
  • {
  • StringBuffer sys=new StringBuffer(「校内カリキュラム管理」);
  • System.out.println(「」+sys+「」システムへようこそ);
  • //宣言カリキュラム名文字列
  • StringBuffer courseName=new StringBuffer();
  • System.out.println(「当期の5つの必修科目名を入力してください:」);
  • Scanner input=new Scanner(System.in);
  • //ループ受信コンソール入力文字列
  • String name="";
  • for(int i=0;i<5;i++)
  • {
  • name=input.next();
  • courseName.append(name+"\t");
  • if(i==4)
  • {
  • System.out.println(「入力完了!」
  • }
  • }
  • System.out.println(「今学期の必修科目は:」+courseName);
  • }

  • このプログラムでは、まず空のStringBufferオブジェクトを宣言し、次にcourseName変数を宣言して初期化します.この変数は、ユーザーがコンソールから入力したカリキュラム名を格納し、次にforループ文を使用してユーザー入力データをループ受信するために使用されます.ループでは、StringBufferオブジェクトのappend()を呼び出します.メソッドユーザーが入力した文字列を追加し、ユーザーが5つのコースの名前を記録した後、プログラムは「入力完了!」のヒント情報を出力します.最後にString-Bufferオブジェクト文字列を出力します.プログラムを実行し、実行結果は以下の通りです.
        《      》  
                 :
    Java    
    SQL     
        
    Java      
      
        !
             :Java      SQL             Java          

    置換文字
    StringBufferクラスのsetCharAt()メソッドは、文字列の指定されたインデックス位置に文字を置換するために使用されます.このメソッドの構文フォーマットは次のとおりです.
    StringBuffer   .setCharAt(int index, char ch);

    このメソッドの役割は、オブジェクト内のインデックス値がindexの位置の文字を新しい文字chに変更することです.たとえば、次のようにします.
     
  • StringBuffer sb=new StringBuffer(“hello");
  • sb.setCharAt(1,'E');
  • System.out.println(sb);//出力:hEllo
  • sb.setCharAt(0,'H');
  • System.out.println(sb);//出力:HEllo
  • sb.setCharAt(2,'p');
  • System.out.println(sb);//出力:HEplo
  • 文字列の反転
    StringBufferクラスのreverse()メソッドを使用して、文字列シーケンスを反転させて置き換えます.構文フォーマットは次のとおりです.
    StringBuffer   .reverse();

    StringBufferクラスのreverse()メソッドを使用して文字列を反転する例は、次のとおりです.
     
  • StringBuffer sb=new StringBuffer("java");
  • sb.reverse();
  • System.out.println(sb);//出力:avaj
  • 文字列の削除
    StringBufferクラスでは、deleteCharAt()とdelete()の2つの文字列を削除する方法が用意されています.以下で詳しく説明します.
    1.deleteCharAt()メソッド
    deleteCharAt()メソッドは、シーケンス内の指定された位置の文字を削除するために使用されます.構文フォーマットは次のとおりです.
    StringBuffer   .deleteCharAt(int index);

    deleteCharAt()メソッドは、指定された位置の文字を削除し、残りの内容を新しい文字列にする役割を果たします.たとえば、次のようになります.
     
  • StringBuffer sb=new StringBuffer("She");
  • sb.deleteCharAt(2);
  • System.out.println(sb);//出力:Se
  • このセグメントコードを実行し、文字列sbのインデックス値が2の文字を削除し、残りの内容が新しい文字列を構成するので、オブジェクトsbの値はSeとなる.
    2.delete()メソッド
    delete()メソッドは、シーケンスのサブ文字列の文字を除去するために使用されます.このメソッドの構文フォーマットは次のとおりです.
    StringBuffer   .delete(int start,int end);

    ここでstartは、削除する文字の最初のインデックス値(インデックス値に対応する文字を含む)を表し、endは、削除する文字列の最後のインデックス値(インデックス値に対応する文字を含まない)を表します.この方法の役割は、指定された領域内のすべての文字を削除することです.たとえば、次のようになります.
     
  • StringBuffer sb=new StringBuffer("hello jack");
  • sb.delete(2,5);
  • System.out.println(sb);//出力:he jack
  • sb.delete(2,5);
  • System.out.println(sb);//出力:heck
  • このセグメントコードを実行して、文字列「hello jack」インデックス値が2(含む)からインデックス値が5(含まない)までのすべての文字を削除します.したがって、出力される新しい文字列の値は「he jack」です.