1. 程式人生 > >【奔跑的菜鳥】Java中的引用傳遞

【奔跑的菜鳥】Java中的引用傳遞

剛開始從C/C++轉到Java感覺真的有點不適應,在Java傳遞時,經常有時弄不清楚,可以通過下面一個Java程式來分析一下
public class Test
{
	public static void main(String[] args)
	{
		Person per = new Person();
		per.name = "zhou";
		Person per_c = per;
		Test test = new Test();
		test.changName(per, per_c);
		System.out.println(per.name);
		
		
	}
	
	 void changName(Person per1,Person per2)
	{
		per1.name = "liao";
		per2.name = "wang";
	}
	
}

class Person
{
	String name;
}

看上面的程式碼,其輸出結果:wang

下面我們就來分析一下,從main函式進入,先建立了一個Person的物件per,然後把per.name賦值為zhou,然後把per的引用賦給per_c,注意:此時並沒有建立Person物件。此時,只有一個物件,而有兩個指向物件的引用。然後呼叫changeName()修改的是同一個物件的值。最後,物件的值以最後一次修改為準。so,輸出為:wang。注意:自始至終Person的物件只有一個