JAvaのStringBufferクラスとStringBuilderクラス


StringBufferは、Stringと親関係があるように見えるクラスですが、実際にはそうですが、Stringクラスのすべての基本機能を含む場合、文字列を頻繁に操作する必要がある場合に適しています.
まず、一言見てみましょう.
「Stringの場合、文字列定数は宣言されると変更できませんが、文字列オブジェクトは変更できますが、変更されるのはメモリアドレスの指向です」
簡単な例を見てみましょう
String s="abc";//このときsはオブジェクトnew String(「abc」)を指す
s="bcd";          //このときsはnew String(「bcd」)を指し,元の指向オブジェクトは捨てられる.
また、s=s+「hello」;まだ新しいオブジェクトnew String(「bcdhello」)を指しており、新しいオブジェクトを格納するためにJVMがBufferStringを自動的に生成します.
StringBufferの文字列の接続にはappend()メソッドが使用されます.
public class StringBufferDemo01 {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer() ;
		buf.append("hello") ;
		buf.append(" ").append("world").append("!!!") ;
		System.out.println(buf) ;
	}

}

Stringはfinal定義を使用しているため継承できません.
String——>StringBuffer
public class StringBufferDemo02 {
<span style="white-space:pre">	</span>public static void main(String[] args) {
                String s="hello";
<span style="white-space:pre">		</span>StringBuffer buf = new StringBuffer(str) ;
<span style="white-space:pre">		</span>System.out.println(buf) ;
<span style="white-space:pre">	</span>}
}

StringBuffer——>String
public class StringBufferDemo02 {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer() ;
		buf.append("hello") ;
		String str = buf.toString() ;	// StringBuffer --> String
		System.out.println(str) ;
	}
}

StringBufferの3つの一般的な方法
reverse()                                     文字列の反転
replace(start,end,"str")                文字列指定部分置換
insert(pos,"str")                           文字列指定位置挿入文字列アクション
以上の3つのメソッドStringクラスは存在しません
ここでは文字列クラスStringBuilderを追加します
StringBuilderの可変文字シーケンスは5.0に追加されました.これにより、StringBufferと互換性のあるAPIが提供されますが、同期は保証されません.このクラスはStringBufferの簡易置換として設計され,文字列バッファが単一スレッドで使用される場合に用いられる(この場合は一般的である).可能であれば、ほとんどの実装ではStringBufferよりも速いため、クラスを優先することをお勧めします.両者の方法は基本的に同じです.
おすすめブログ:http://blog.csdn.net/sunnyyoona/article/details/50370580