1. 程式人生 > >字串 String和StringBuffer的區別(從程式碼講解)

字串 String和StringBuffer的區別(從程式碼講解)

Java面試中經常問到字串,下面是根據百度面試整理出來的內容:

一、String和StringBuffer有什麼區別?

String的長度是不可變的,StringBuffer的長度是可變的。

如果你對字串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法。

二、程式碼舉例

public class StringDemo {
	public static void main(String[] args){
		String a1 = new String("hello ");
		a1 += "world";
		System.out.println("a1 = "+a1);
		
		StringBuffer a2 = new StringBuffer("hello ").append("world");
		System.out.println("a2 = "+a2);	
	}
}

a1和a2的區別:

a1生成了3個字串物件,即在記憶體堆中開闢了三塊空間。分別是:new String的一個hello物件;賦值給a1的一個物件;a1 += 的一個物件

a2生成了1個字串物件,即hello world

一般公司規定:String用 + 號,超過3個,就要用StringBuffer

三、詳解

String str = “hello”;

建立1個物件,即hello字串,JVM的字串快取池會快取這個字串

String str = new String(“hello”);

建立2個物件,JVM的字串快取池中的hello字串,str則是該物件的引用,因此共建立2個物件。(str所引用的String物件底層包含一個char[] 陣列,這個陣列中存放了h、e、l、l、o字元)

四、書上內容參考