Java中形參的傳遞方式只有一種,那就是值傳遞(包括數(shù)據(jù)值與地址值兩種,數(shù)據(jù)值是數(shù)據(jù)的副本,地址值類似指針),不管參數(shù)的類型是基本類型還是類類型。
1)當(dāng)參數(shù)類型是基本類型時(shí),形參獲取實(shí)參一個(gè)副本并傳遞給方法(修改副本并不影響原本本身)。如下程序所示:
public static void changeInt(int a){
a=100;
}
public static void main(String[] args){
int a=10;
changeInt(a);
System.out.println(a);
}
輸出結(jié)果當(dāng)然是10。
2)當(dāng)參數(shù)類型是類類型時(shí),形參獲取實(shí)參地址(實(shí)參實(shí)際上就是存儲(chǔ)的地址,也就是說(shuō)它的值就是地址)的一個(gè)副本并傳遞給方法,如下程序所示:
public static void main(String[] args){
Name n=new Name("zhenxing","sun");
changeName(n);
System.out.println(n);
}
public static void changeName(Name n){
n=new Name("yuanyuan","sun");
}
Name類的定義
class Name {
public String firstName;
public String lastName;
public Name(String firstName,String lastName){
this.firstName=firstName;
this.lastName=lastName;
}
public String toString(){
return firstName+"-"+lastName;
}
}
程序的輸出是zhenxing-sun,下圖分析了程序的執(zhí)行過(guò)程。
由圖中可以看到雖然changeName方法中的n變量指向了新的Name實(shí)例,但是main方法中的n變量指向的對(duì)象并沒(méi)有改變,所以最終的輸出時(shí)zhenxing-sun。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。