JavaのstringbufferとStringクラス:


#StringBufferクラスはStringと同様に文字列を表すためにも使用されますが、StringBufferの内部実装方式がStringと異なるため、StringBufferは文字列処理時に新しいオブジェクトを生成せず、メモリ使用上Stringクラスより優れています.したがって、実際に使用する場合、挿入、削除などの文字列を変更する必要がある場合は、StringBufferを使用するとより適切です.StringBufferクラスにはStringクラスと同様の方法が多く存在し,これらの方法は機能的にStringクラスと全く同じである.しかし、最も顕著な違いは、StringBufferオブジェクトの変更のたびにオブジェクト自体が変更される点であり、Stringクラスと最大の違いである.またStringBufferはスレッドが安全であるため,スレッドの概念については専門的な章が続くため,マルチスレッドプログラムでも使いやすいが,プログラムの実行効率は相対的にやや遅い.
1、StringBufferオブジェクトの初期化StringBufferオブジェクトの初期化Stringクラスの初期化のようにJavaが提供する特殊な構文ではなく、通常は構造方法で初期化される.例:
 StringBuffer s = new StringBuffer();
このように初期化されたStringBufferオブジェクトは空のオブジェクトです.コンテンツ付きStringBufferオブジェクトを作成する必要がある場合は、次の操作を行います.
 **StringBuffer s = new StringBuffer(“abc”);**
このように初期化されたStringBufferオブジェクトの内容が文字列「abc」である.StringBufferとStringは異なるタイプに属し、強制タイプ変換も直接行うことはできません.次のコードはエラーです.
StringBuffer s = “abc”;               //       
StringBuffer s = (StringBuffer)”abc”;    //       ,      
StringBufferオブジェクトとStringオブジェクトの間の相互回転のコードは次のとおりです.
String s = “abc”;
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = new StringBuffer(s);     //String   StringBuffer
String s1 = sb1.toString();              //StringBuffer   String
2、StringBufferの一般的なメソッドStringBufferクラスのメソッドは、文字列の変化、例えば追加、挿入、削除などに重点を置いており、これもStringBufferとStringクラスの主な違いである.a、appendメソッドpublic StringBuffer append(boolean b)このメソッドの役割は、文字列の接続に類似した現在のStringBufferオブジェクトの末尾にコンテンツを追加することである.このメソッドを呼び出すと、StringBufferオブジェクトの内容も変更されます.たとえば、StringBuffer sb=new StringBuffer("abc");sb.append(true); オブジェクトsbの値は「abctrue」になります.このメソッドを使用して文字列の接続を行うと、Stringよりもコンテンツが節約されます.たとえば、データベースSQL文に適用される接続などです.たとえば、次のようになります.
     StringBuffer sb = new StringBuffer();
     String user = “test”;
     String pwd = “123”;
     sb.append(“select * from userInfo where username=“)
     .append(user)
     .append(“ and pwd=”)
     .append(pwd);
このようなオブジェクトsbの値は、文字列「select*from userInfo where username=test and pwd=123」である.b、deleteCharAtメソッドpublic StringBuffer deleteCharAt(int index)このメソッドの役割は、指定された位置の文字を削除し、残りの内容を新しい文字列にすることである.たとえば:
 StringBuffer sb = new StringBuffer(“Test”); sb. deleteCharAt(1);
このコードの役割は、文字列オブジェクトsbのインデックス値が1の文字、すなわち2番目の文字を削除し、残りの内容が新しい文字列を構成することを削除する.したがって、オブジェクトsbの値は「Tst」になる.また、public StringBuffer delete(int start,int end)という機能的なdeleteメソッドも存在します.このメソッドの役割は、指定された区間内のすべての文字を削除し、startを含み、endインデックス値を含まない区間を削除することです.たとえば:
    StringBuffer sb = new StringBuffer(“TestString”);
         sb. delete (1,4);
このコードは、インデックス値1(含む)からインデックス値4(含まない)までのすべての文字を削除し、残りの文字が新しい文字列を形成する役割を果たします.オブジェクトsbの値は「TString」である.c、insertメソッドpublic StringBuffer insert(int offset, boolean b)このメソッドの役割は、StringBufferオブジェクトにコンテンツを挿入し、新しい文字列を形成することである.たとえば:
    StringBuffer sb = new StringBuffer(“TestString”);
    sb.insert(4,false);
このサンプルコードは、オブジェクトsbのインデックス値4の位置にfalse値を挿入して新しい文字列を形成する役割を果たし、実行後のオブジェクトsbの値は「TestfalseString」である.d,reverseメソッドpublic StringBuffer reverse()このメソッドの役割は、StringBufferオブジェクト内のコンテンツを反転させ、新しい文字列を形成することである.たとえば:
         StringBuffer sb = new StringBuffer(“abc”);
         sb.reverse();
反転すると、オブジェクトsbの内容は「cba」になります.e、setCharAtメソッドpublic void setCharAt(int index, char ch)このメソッドの役割は、オブジェクト内のインデックス値がindex位置の文字が新しい文字chであることを修正することである.たとえば:
StringBuffer sb = new StringBuffer(“abc”); sb.setCharAt(1,’D’);
オブジェクトsbの値は「aDc」になります.f,trimToSizeメソッドpublic void trimToSize() StringBufferオブジェクトの中記憶空間を文字列長と同じ長さに縮小し,空間の浪費を低減する役割を果たす.要するに、実際に使用する場合、StringとStringBufferはそれぞれメリットと不足があり、具体的な使用環境に応じて、対応するタイプを選択して使用することができます.
原文の由来http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html
stringクラスhttp://www.cnblogs.com/springcsc/archive/2009/12/03/1616326.html