Java-初步認識-常用對象API(StringBuffer類-特點添加功能)

一.

這個對象以後開發中很常用,Buffer是緩衝區的意思,字符串緩衝區對象。

在java.lang包中,有StringBuffer類。緩衝區就是容器,對數據進行了臨時存儲,StringBuffer做就得就是這個事情。

之前學習的數組也是個容器,它也能存儲東西,區別在哪裏?

數組是固定長度的,StringBuffer是可變長度的。容器知識點要重點掌握,以後數據多了要存儲起來使用。

數組定義完了之後,只能往裏面存儲同一類數據,StringBuffer可以存儲不同類型數據,

append就是添加,不同的append方法很多,這裏只是截圖了一種。它會在緩衝區裏面進行數據追加,byte和short類型的數據不可以添加(沒什麼事兒,short和byte類型,int都可以接收)。

添加方法append返回類型還是StringBuffer,返回的還是本類對象。

在演示添加數據的方法之前,先要建立一個緩衝區。

這個緩衝區一new出來,就能夠存儲16個字符。

緩衝區沒啥,裏面還是數組,只不過它把數組給封裝了。對外提供這麼一個方法,16代表着數組的長度。

想通過sb建立的s1,它們兩者之間有什麼聯繫。DOS結果顯示都爲4。

sb的輸出結果是直接將緩衝區裏面的內容變成了字符串。接着又進行sb==s1?結果顯示爲true。

有一個容器,把4放置在裏面,返回來的依舊是容器。

通過上面截圖中的方式,貌似可以不同建立s1就一樣操作,但是我的疑問是,需要toString方法麼

這個截圖的結果是4true,打印出來的就是一個字符串。

緩衝區是用來存儲字符串的,存儲結束了要想用其中的數據,最終還要把它變成字符串才能用。緩衝區是用來存儲數據的,存儲完了,就要進行整合,變成一個大的數據,接着變成字符串才能繼續使用。

緩衝區存入數據後,全都集中在一起。而數組中,是分開的。

sb.append(4)運算完了後,返回的是當前緩衝區對象,一個對象調用完方法之後,還是對象。下圖就是方法調用鏈

這些通過append方法追加的數據,都是在尾部形成字符串的,如果想到添加到中間來怎麼辦?
採用insert方法,參數列表中有兩個參數,插入的位置和插入的數據。

結果輸出的是4hahafalse,4的位置是0,。想在哪兒放置就在哪兒放置,這就是緩衝區的特點。

字符串一旦確定就不能修改了,只有通過緩衝區可以進行變化。

DOS結果爲abqqce,2的位置原先是c,現在變爲qq了。

上面說了一些字符緩衝區的特點和裏面所涉及的一些動作。

package stringbuffer.demo;

public class StringBufferDemo {

	public static void main(String[] args) {
		/*
		 * StringBuffer:就是字符串緩衝區
		 * 用於存儲數據的容器。
		 * 特點
		 * 1.長度是可變的
		 * 2.可以存儲不同類型的數據。
		 * 3.最終要轉成字符串進行使用。
		 * 4.可以對字符串進行修改
		 * 
		 * 既然是一個容器,應該具備什麼功能呢?
		 * 1.添加:
		 * 		StringBuffer append(data):
		 * 		StringBuffer insert(index,data);
		 * 2.刪除:
		 * 	StringBuffer delete(start,end):包含頭,不包含尾
		 * 	StringBuffer  deleteCharAt(int index):刪除指定位置的元素。
		 * 3.查找:
		 * 	char charAt(index);
		 * 	int indexof(string);
		 * 	int lastIndexof(string);
		 * 4.修改:
		 * 	StringBuffer replace(start,end,string);
		 * 	void setCharAt(index,char);
		 * 5.增刪改查 c(create) U(update) R(read) D(dete)
		 * 	
		 * 
		 * StringBuffer();
		 * 線程安全。
		 * 
		 * 
		 * 
		 * 
		 * 
		 * 
		 */
		
//	bufferMethodDemo();
	bufferMethodDemo2();
		
	}

	public static void bufferMethodDemo2() {
		
		StringBuffer sb = new StringBuffer("abcdefgh");
		
		sb.delete(1, 3);//刪除元素,包含頭,不包含尾
		//清空緩衝區
//		sb.delete(0, sb.length());
		//sb = new StringBuffer//用這種方法清空內存,不合適,浪費內存
		System.out.println(sb);//adefgh
		
		sb.deleteCharAt(0);
		System.out.println(sb);//defgh
		
		sb.replace(0, 2, "gao");
		System.out.println(sb);//gaofgh
		sb.setCharAt(0, 'h');
		System.out.println(sb);//haofgh
		
		


	}

	public static void bufferMethodDemo() {
		//創建緩衝區對象。
		StringBuffer sb = new StringBuffer();
		
//		StringBuffer s1 = sb.append(4);
		
//		System.out.println(sb==s1);//true
		sb.append(4).append(false).append("haha");
		sb.insert(2, "搞");
//		sb.append(true);
		//緩衝區是存儲數據的。用的話還需要轉成字符串。
		System.out.println(sb);
		
	}

	
}

發佈了30 篇原創文章 · 獲贊 6 · 訪問量 8733
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章