關於方法之間傳值的問題

        public static void main(String[] args) {
		StringBuffer a = new StringBuffer("A");
		StringBuffer b = new StringBuffer("B");
		passValue(a,b);
		System.out.println(a.toString()+" - "+b.toString());
	}
	
	public static void passValue(StringBuffer x,StringBuffer y){
		x.append(y);
		y = x;
	}


問題是輸出什麼?

x的地址值和a相等。y的地址值和b相等,

x.append(y); 是使用a的地址值指向的StringBuffer對象添加y(b);

這樣一來的話就是 a = x = AB了。

然後(重點來了):

y = x;

這句是重新給y賦予x(a)的地址值,拋棄了原來b的地址值。

這樣一來    y = x = a = “AB”的地址值;

那麼b還是沒變,還是指向“B”的地址值。

那麼輸出就應該是 AB - B  


做個記號。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章