1. 程式人生 > >Java基礎(四十一)-Java基礎類庫

Java基礎(四十一)-Java基礎類庫

StringBuffer類

背景:

1:String類是在所有專案中一定會使用到的一個功能類;

(1):每一個字串的常量都屬於一個String類的匿名物件;

(2):String有兩個常量池:靜態常量池,執行時常量池;

(3):String類物件例項化建議使用賦值的形式完成,這樣可以直接將物件儲存在物件池中以供下次重用。

在這裡插入圖片描述

2:StringBuffer類

在這裡插入圖片描述

3觀察String和StringBuffer的對比

public class Test {
	public static void main(String[] args) {
		String str = "Hello " ;
		change(str) ;
		System.out.println(str);
	}
	public static void change(String temp) {
		temp += "World !" ;	// 內容並沒有發生改變
	}
}
//輸出結果是hello
public class JavaAPIDemo {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer("Hello ") ;
		change(buf) ;
		System.out.println(buf.toString());
	}
	public static void change(StringBuffer temp) {
		temp.append("World !") ;	// 內容並沒有發生改變
	}
}

public class Test {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer("Hello ") ;
		change(buf) ;
		System.out.println(buf.toString());
	}
	public static void change(StringBuffer temp) {
		temp.append("World !") ;	// 內容發生改變
	}
}
//輸出結果
Hello World !

在這裡插入圖片描述

3:分析一下已有的問題

public class Test {
	public static void main(String[] args) {
		String strA = "www.mldn.cn" ;
		String strB = "www." + "mldn" + ".cn" ;
		System.out.println(strA == strB);
	}
}
//輸出結果:
//true

上述程式碼中,strB的物件內容不算是改變,對於現在的strB當程式編譯之後會變為如下的形式,

StringBuffer buf = new StringBuffer(); buf.append(“www.”).append(“mldn”).append(“cn”);

所有的+在編譯之後變成了StringBuffer中的append()方法,

4:StringBuffer與String類物件之間本來就可以直接互相轉換

String類物件變為StringBuffer可以依靠StringBuffer類的構造方法或利用append()方法;

所有類物件都可以通過toString()方法將其變為String型別。

5:StringBuffer類中的一些方法

在這裡插入圖片描述

public class Test {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer() ;
		buf.append(".cn").insert(0, "www.").insert(4, "mldn") ;
		System.out.println(buf);
	}
}
//www.mldn.cn

在這裡插入圖片描述

public class Test {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer() ;
		buf.append("Hello World !").delete(6, 12).insert(6, "MLDN") ;
		System.out.println(buf);
	}
}
//Hello MLDN!

在這裡插入圖片描述

public class Test {
	public static void main(String[] args) {
		StringBuffer buf = new StringBuffer() ;
		buf.append("Hello World !") ;
		System.out.println(buf.reverse());
	}
}
//! dlroW olleH

6:StringBuilder

在這裡插入圖片描述