【奔跑的菜鳥】Java中的引用傳遞
阿新 • • 發佈:2019-02-04
剛開始從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的物件只有一個