String類與StringBuffer類區別

emmmm…由於我一開始對String 、StringBuffer有點混亂,不清楚什麼情況下用哪個,所以這裏專門寫一篇博客加深理解。

在上一篇博客中我講了String類的特點,其中有一點就是String類的常量一旦聲明,不可改變,如果改變對象內容,改變的只是其引用指向而已,通常來講,String類的操作比較簡單,但是由於String類的不可更改特性,就使得我們在操作的過程中很不方便。

爲了方便字符串的修改,提供了StringBuffer類,所以StringBuffer類最顯著的特點就是可以更改,因爲內部提供了append()方法。
先看一端代碼:

public class Test{
	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer();
		sb.append("Hello").append("World");
		fun(sb);
		System.out.println(sb);
	}
	public static void fun(StringBuffer temp) {
		temp.append("\n").append("www.st.com.cn");
	}
}
//輸出的結果是:
HelloWorld
www.st.com.cn

String和StringBuffer最大的區別在於:String的內容無法修改,而StringBuffer的內容可以修改。頻繁修改字符串的情況考慮使用StingBuffer

注意:String和StringBuffer類不能直接轉換。如果要想互相轉換,可以採用如下原則:

  • String變爲StringBuffer:利用StringBuffer的構造方法或append()方法
  • StringBuffer變爲String:調用toString()方法

除此之外,StringBuffer類也提供了一些String類中沒有的方法,例如:

字符串反轉:
public synchronized StringBuffer reverse()
刪除指定範圍內的數據
public synchronized StringBuffer delete(int start, int end)
插入數據
public synchronized StringBuffer insert(int offset, 各種數據類型 b)

面試題

問:解釋一下String類、StringBuffer類以及StringBuilder類的區別:

  • String的內容不可修改,StringBuffer與StringBuilder的內容可以修改.
  • StringBuffer採用同步處理,屬於線程安全操作;而StringBuilder採用異步處理,屬於線程不安全操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章