java学習の道のJava常用類-StringBuffer類、StringBuider類と練習問題


import org.junnit.Test;StringBuffer類:java.lang.StringBufferは可変の文字列を表し、文字列の内容を削除することができます。多くの方法はStringと同じですが、StingBufferは可変長さです。StringBufferは容器です。StringBuffer類には、1.StringBuffer()の初期容量が16の文字列バッファー2.StringBuffer(int size)が指定容量を構成する文字列バッファー3.String Buffer(String str)がコンテンツを指定文字列内容に初期化する3つの構成方法があります。  StringBuffer類の一般的な方法:String Buffer apend(String s)、   StringBuffer apped(int n)  StringBuffer apped(Object o)  StringBuffer apped(char n)、StringBuffer apped(long n)、  StringBuffer apped、StringBuffer insert(int index、String str)  public StringBuffer reverse()  StringBuffer delete(int startIndex,int endIndex)  public char charAt(int n)putblic void set CharAt(int n,char ch)StringBuffer replace(int startIndex,int endIndex,String str)  public int indexOf(String str)public String substring(int start,int end)Public int length()String Buider類:String BuiderとStrigBurerは非常に似ています。いずれも可変の文字配列を表します。また、方法も同じです。:可変文字配列、高効率、スレッド不安全String使用落とし穴:string s="a"  //文字列s=s+「b」を作成しました。/実際には元の「a」文字列オブジェクトは廃棄されていますが、現在は文字列s+「b」(つまり「ab」)が作成されています。これらの文字列を変更する操作を複数回行うと、その結果として生じることがあります。
大量のコピー文字列オブジェクトがメモリに保存されているため、効率が低下します。このような操作がサイクルに入ると、プログラムの性能に大きな影響を与えます。
練習問題:
/**
 * StringBuffer :
 * 		        Unicode     
 * append(...)         
 * insert(int index, ...);             
 * delete(int begin, int end);      
 * setCharAt(int index, char newCh);            newCh
 *
 */
public class StringBufferTest {

	@Test
	public void test2() {
		String text = "";
		long startTime = 0L;
		long endTime = 0L;
		StringBuffer buffer = new StringBuffer("");
		StringBuilder builder = new StringBuilder("");
		startTime = System.currentTimeMillis();
		for (int i = 0; i < 20000; i++) {
			buffer.append(String.valueOf(i));
		}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuffer     :" + (endTime - startTime));
		startTime = System.currentTimeMillis();
		for (int i = 0; i < 20000; i++) {
			builder.append(String.valueOf(i));
		}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuilder     :" + (endTime - startTime));
		startTime = System.currentTimeMillis();
		for (int i = 0; i < 20000; i++) {
			text = text + i;
		}
		endTime = System.currentTimeMillis();
		System.out.println("String     :" + (endTime - startTime));
		//   3    ,   1      StringBuilder,          ,          ,     
	}

	@Test
	public void test1() {
		StringBuffer sBuffer = new StringBuffer("     ");
		sBuffer.append(100).append(false).append(3.14).append("  ");
		sBuffer.append(new Person());
		System.out.println(sBuffer);

		sBuffer.insert(2, "  ");
		sBuffer.insert(2, 100.23f);

		System.out.println(sBuffer);

		sBuffer.delete(2, 7); //          

		System.out.println(sBuffer);
	}
}