
方法的參數(shù)傳遞
一.方法的參數(shù)傳遞:
<1>參數(shù)分為哪幾種?
1.實參;2.形參;
<2>什么是實參,什么是形參?
假設(shè)現(xiàn)在你有一支鋼筆,鋼筆的外殼就是形參,是不變的。而墨水則是實參,是需要用的。
<3>實參具體位置在哪里?形參位置具體在哪里?
下面看一段代碼:
1. public class test1{
2.
3. public static void main(String[] args){
4.
5. Test t1 = new Test();
6.
7. //s1 和 s2 是實參
8. int s1 = 1;
9. int s2 = 2;
10.
11. System.out.println("s1:" + s1 + ", s2" + s2);
12.
13. //調(diào)用swap()方法時,傳入實參的值
14. t1.swap(s1,s2);
15.
16. System.out.println("s1:" + s1 + ", s2" + s2);
17.
18. /*swap(int s1,int s2) s1 和 s2 是形參
19. *形參的命名是任意,也可以和實參一樣。
20. */
21. public void swap(int s1,int s2){
22.
23. int temp = i;
24. i = j;
25. j = temp;
26.
27. }
輸出結(jié)果為:
s1:1, s2:2
s1:2, s2:1
總結(jié):
1.形參:方法聲明時,方法小括號內(nèi)是形參。
2.實參:調(diào)用方法時實際傳入?yún)?shù)的值。
二.規(guī)則:java中的參數(shù)傳遞機制:值傳遞機制
<1>形參是基本數(shù)據(jù)類型:將實參的值傳遞給形參的基本數(shù)據(jù)類型的變量
<2>形參是引用數(shù)據(jù)類型:將實參的引用類型變量的值(對應(yīng)的堆空間的對象的首地址值)傳遞給形參的引用類型變量。
第一個形參是基本數(shù)據(jù)類型時,實參的數(shù)值傳遞傳遞給形參,上面的代碼是一個案例了。
現(xiàn)在來說說第二個,當形參為引用數(shù)據(jù)類型的情況。
先舉個栗子,便于讀者理解:
小明和小華現(xiàn)在有同時共有一輛玩具車,可以把玩具車理解為對象首地址值,共有可以理解為一個指針,小明和小華同時指向玩具車,而小明不喜歡玩具車輪子的型號,背著小華偷偷的把輪子型號換了。
這時小華不知道車輪被小明換了。輪子是玩具車的一部分,對象首地址值就是玩具車,輪子就是首地址值指向的數(shù)值,現(xiàn)在數(shù)值被改變了。
先看這段代碼:
1.public class test2{
2.
3. //創(chuàng)建一個swap()方法,形參為DateSwap類型的 ds
4. public void swap(DateSwap ds){
5.
6. int temp = ds.i;
7. ds.i = ds.j;
8. ds.j = ds.temp;
9.
10.
11. }
12.
13. //創(chuàng)建一個靜態(tài)類
14. static void DateSwap{
15.
16. int i = 1;
17. int j = 2;
18.
19. }
20.
21. //主方法main()
22. public static void main(String[] args){
23.
24. //創(chuàng)建對象t1
25. Test1 t1 = new Test1();
26.
27. DateSwap ds = new DateSwap();
28.
29. //調(diào)用swap()方法
30. t1.swap(ds);
31.
32. System.out.println("ds.i" + ds.i + "ds.j" + ds.j);
33.
34.
35. }
36.
37.}

在棧區(qū)中開辟了兩個方法,分別把main()看成小明,swap()看成小華,new出來的對象的首地址值看成玩具車,靜態(tài)DateSwap類中初始化的 i 和 j 是輪子,現(xiàn)在把輪子型號做了個交換。
注意:
引用數(shù)據(jù)類型的值其中只要一改變,原值就會跟著改變,而基本數(shù)據(jù)類型是其中一個改變,原值不改變。
就像你去復(fù)印一份資料,復(fù)印件你怎么畫都行,原件內(nèi)容始終是不變的,而引用數(shù)據(jù)類型是,你拿去復(fù)印時,不小心被幫你復(fù)印的人弄了幾筆上去,原件內(nèi)容也就改變了。
s1 和 s2 是基本數(shù)據(jù)類型,s1 和 s2 被交換后,原來的s1 和 s2 保持不變,可以拿第一個代碼對比第二個代碼看。
如果你喜歡這篇文字,可關(guān)注微信公眾號:wu_you_lT,有深度好文等你閱讀哦!