常見物件-StringBuffer

ZHOU_VIP發表於2017-05-14

package cn.itcast_01;

/*
 * 執行緒安全(多執行緒講解)
 * 安全   -- 同步  --- 資料是安全的
 * 不安全 -- 不同步--- 效率高一些
 * 安全和效率問題是永遠困擾我們的問題。
 * 安全:醫院的網站,銀行網站
 * 效率:新聞網站,論壇之類的
 * 
 * StringBuffer:執行緒安全的可變字串。
 * 
 * StringBuffer和String的區別?
 * 前者長度和內容可變,後者不可變。
 * 如果使用前者做字串的拼接,不會浪費太多的資源。
 * 
 * StringBuffer的構造方法:
 * 		public StringBuffer():無參構造方法
 *		public StringBuffer(int capacity):指定容量的字串緩衝區物件
 *		public StringBuffer(String str):指定字串內容的字串緩衝區物件
 *
 * StringBuffer的方法:
 *		public int capacity():返回當前容量。	 理論值
 *		public int length():返回長度(字元數)。 實際值
 */
public class StringBufferDemo {
	public static void main(String[] args) {
	
		// public StringBuffer():無參構造方法
		StringBuffer sb = new StringBuffer();                  //一般用第一個
		System.out.println("sb:" + sb);                        //sb:
		System.out.println("sb.capacity():" + sb.capacity());  //sb.capacity():16
		System.out.println("sb.length():" + sb.length());      //sb.length():0


		// public StringBuffer(int capacity):指定容量的字串緩衝區物件
		StringBuffer sb2 = new StringBuffer(50);              
		System.out.println("sb2:" + sb2);                      //sb2:
		System.out.println("sb2.capacity():" + sb2.capacity());//sb2.capacity():50
		System.out.println("sb2.length():" + sb2.length());    //sb2.length():0


		// public StringBuffer(String str):指定字串內容的字串緩衝區物件
		StringBuffer sb3 = new StringBuffer("hello");          
		System.out.println("sb3:" + sb3);                      //sb3:hello
		System.out.println("sb3.capacity():" + sb3.capacity());//sb3.capacity():21 //即初始容量16+長度5
		System.out.println("sb3.length():" + sb3.length());    //sb3.length():5
		
	}
}

StringBuffer的新增功能:


package cn.itcast_02;

/*
 * StringBuffer的新增功能:
 * public StringBuffer append(String str):可以把任意型別資料新增到字串緩衝區裡面,並返回字串緩衝區本身
 * 
 * public StringBuffer insert(int offset,String str):在指定位置把任意型別的資料插入到字串緩衝區裡面,並返回字串緩衝區本身
 */
public class StringBufferDemo {
	public static void main(String[] args) {
		// 建立字串緩衝區物件
		StringBuffer sb = new StringBuffer();

		// public StringBuffer append(String str)
		StringBuffer sb2 = sb.append("hello");//返回的是本身,沒有重新開空間
		System.out.println("sb:" + sb);       //sb:hello
		System.out.println("sb2:" + sb2);     //sb2:hello
		System.out.println(sb == sb2);        //true

		// 一步一步的新增資料
		// sb.append("hello");
		// sb.append(true);
		// sb.append(12);
		// sb.append(34.56);

		// 鏈式程式設計
		sb.append("hello").append(true).append(12).append(34.56);
		System.out.println("sb:" + sb);      //sb:hellohellotrue1234.56

		// public StringBuffer insert(int offset,Stringstr):在指定位置把任意型別的資料插入到字串緩衝區裡面,並返回字串緩衝區本身
		sb.insert(5, "world");
		System.out.println("sb:" + sb);      //sb:helloworldhellotrue1234.56
	}
}

StringBuffer的刪除功能:

package cn.itcast_03;

/*
 * StringBuffer的刪除功能
 * public StringBuffer deleteCharAt(int index):刪除指定位置的字元,並返回本身
 * public StringBuffer delete(int start,int end):刪除從指定位置開始指定位置結束的內容,並返回本身
 */
public class StringBufferDemo {
	public static void main(String[] args) {
		// 建立物件
		StringBuffer sb = new StringBuffer();

		// 新增功能
		sb.append("hello").append("world").append("java");
		System.out.println("sb:" + sb);  //sb:helloworldjava

		// public StringBuffer deleteCharAt(int index):刪除指定位置的字元,並返回本身
		// 需求:我要刪除e這個字元,腫麼辦?
		// sb.deleteCharAt(1);
		System.out.println("sb:" + sb);  //sb:hlloworldjava
		

		// public StringBuffer delete(int start,int end):刪除從指定位置開始指定位置結束的內容,並返回本身
		// 需求:我要刪除world這個字串,腫麼辦?
		sb.delete(5, 10);                //包含左邊不包含右邊,幾乎所有的這種方法都是包左不包右的
		System.out.println("sb:" + sb);  //sb:hellojava

		// 需求:我要刪除所有的資料
		sb.delete(0, sb.length());
		System.out.println("sb:" + sb);  //sb:
		
	}
}

StringBuffer的替換功能:

package cn.itcast_04;

/*
 * StringBuffer的替換功能:
 * public StringBuffer replace(int start,int end,String str):從start開始到end用str替換
 */
public class StringBufferDemo {
	public static void main(String[] args) {
		// 建立字串緩衝區物件
		StringBuffer sb = new StringBuffer();

		// 新增資料
		sb.append("hello");
		sb.append("world");
		sb.append("java");
		System.out.println("sb:" + sb); //sb:helloworldjava

		// public StringBuffer replace(int start,int end,String str):從start開始到end用str替換
		// 需求:我要把world這個資料替換為"節日快樂"
		sb.replace(5, 10, "節日快樂");
		System.out.println("sb:" + sb); //sb:hello節日快樂java
	}
}

StringBuffer的反轉功能:

package cn.itcast_05;

/*
 * StringBuffer的反轉功能:
 * public StringBuffer reverse()
 */
public class StringBufferDemo {
	public static void main(String[] args) {
		// 建立字串緩衝區物件
		StringBuffer sb = new StringBuffer();

		// 新增資料
		sb.append("霞青林愛我");
		System.out.println("sb:" + sb); //sb:霞青林愛我

		// public StringBuffer reverse()
		sb.reverse();
		System.out.println("sb:" + sb); //sb:我愛林青霞
	}
}

StringBuffer的擷取功能:

package cn.itcast_06;

/*
 * StringBuffer的擷取功能:注意返回值型別不再是StringBuffer本身了
 * public String substring(int start)
 * public String substring(int start,int end)
 */
public class StringBufferDemo {
    public static void main(String[] args) {
        // 建立字串緩衝區物件
        StringBuffer sb = new StringBuffer();

        // 新增元素
        sb.append("hello").append("world").append("java");
        System.out.println("sb:" + sb);

        // 擷取功能
        // public String substring(int start)
        String s = sb.substring(5);
        System.out.println("s:" + s);
        System.out.println("sb:" + sb);

        // public String substring(int start,int end)
        String ss = sb.substring(5, 10);
        System.out.println("ss:" + ss);
        System.out.println("sb:" + sb);
    }
}



相關文章