1. 程式人生 > >java中String型別引數傳遞問題

java中String型別引數傳遞問題

先看程式碼:

public class Test1 {

	public static void main(String[] args) {
		String str = new String("string型別傳遞:");
		StringBuffer sb = new StringBuffer("stringbuffer傳遞:");
		change(str, sb);
		System.out.println(str);
		System.out.println(sb);
	}
	static void change(String str,StringBuffer sb)
	{
		str = "str";
		sb.append("stringbuffer");
	}
}

程式碼執行結果:

string型別傳遞:
stringbuffer傳遞:stringbuffer

String 和StringBuffer傳遞的都是引用性變數,不同的是String類是final不可變類,當str變數(即string物件的儲存地址)的副本傳遞到chang方法時,按道理來說,修改此副本中的物件內容即會修改原str變數中對應的內容,但是因為string類的不可變性,當修改副本中的內容時,jvm會新一塊記憶體區域,並且記憶體中的內容為“str”,原str變數對應的記憶體塊內容沒有發生變化。