方法的參數(shù)傳遞
一.方法的參數(shù)傳遞:
<1>參數(shù)分為哪幾種?
1.實(shí)參列荔;2.形參敬尺;
<2>什么是實(shí)參枚尼,什么是形參?
假設(shè)現(xiàn)在你有一支鋼筆砂吞,鋼筆的外殼就是形參署恍,是不變的。而墨水則是實(shí)參蜻直,是需要用的盯质。
<3>實(shí)參具體位置在哪里?形參位置具體在哪里概而?
下面看一段代碼:
1. public class test1{
2.
3. public static void main(String[] args){
4.
5. Test t1 = new Test();
6.
7. //s1 和 s2 是實(shí)參
8. int s1 = 1;
9. int s2 = 2;
10.
11. System.out.println("s1:" + s1 + ", s2" + s2);
12.
13. //調(diào)用swap()方法時(shí)呼巷,傳入實(shí)參的值
14. t1.swap(s1,s2);
15.
16. System.out.println("s1:" + s1 + ", s2" + s2);
17.
18. /*swap(int s1,int s2) s1 和 s2 是形參
19. *形參的命名是任意,也可以和實(shí)參一樣赎瑰。
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.形參:方法聲明時(shí)王悍,方法小括號(hào)內(nèi)是形參。
2.實(shí)參:調(diào)用方法時(shí)實(shí)際傳入?yún)?shù)的值餐曼。
二.規(guī)則:java中的參數(shù)傳遞機(jī)制:值傳遞機(jī)制
<1>形參是基本數(shù)據(jù)類(lèi)型:將實(shí)參的值傳遞給形參的基本數(shù)據(jù)類(lèi)型的變量
<2>形參是引用數(shù)據(jù)類(lèi)型:將實(shí)參的引用類(lèi)型變量的值(對(duì)應(yīng)的堆空間的對(duì)象的首地址值)傳遞給形參的引用類(lèi)型變量配名。
第一個(gè)形參是基本數(shù)據(jù)類(lèi)型時(shí),實(shí)參的數(shù)值傳遞傳遞給形參晋辆,上面的代碼是一個(gè)案例了渠脉。
現(xiàn)在來(lái)說(shuō)說(shuō)第二個(gè),當(dāng)形參為引用數(shù)據(jù)類(lèi)型的情況瓶佳。
先舉個(gè)栗子芋膘,便于讀者理解:
小明和小華現(xiàn)在有同時(shí)共有一輛玩具車(chē),可以把玩具車(chē)理解為對(duì)象首地址值霸饲,共有可以理解為一個(gè)指針为朋,小明和小華同時(shí)指向玩具車(chē),而小明不喜歡玩具車(chē)輪子的型號(hào)厚脉,背著小華偷偷的把輪子型號(hào)換了习寸。
這時(shí)小華不知道車(chē)輪被小明換了。輪子是玩具車(chē)的一部分傻工,對(duì)象首地址值就是玩具車(chē)霞溪,輪子就是首地址值指向的數(shù)值,現(xiàn)在數(shù)值被改變了中捆。
先看這段代碼:
1.public class test2{
2.
3. //創(chuàng)建一個(gè)swap()方法鸯匹,形參為DateSwap類(lèi)型的 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)建一個(gè)靜態(tài)類(lè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)建對(duì)象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ū)中開(kāi)辟了兩個(gè)方法,分別把main()看成小明泄伪,swap()看成小華殴蓬,new出來(lái)的對(duì)象的首地址值看成玩具車(chē),靜態(tài)DateSwap類(lèi)中初始化的 i 和 j 是輪子蟋滴,現(xiàn)在把輪子型號(hào)做了個(gè)交換染厅。
注意:
引用數(shù)據(jù)類(lèi)型的值其中只要一改變痘绎,原值就會(huì)跟著改變,而基本數(shù)據(jù)類(lèi)型是其中一個(gè)改變肖粮,原值不改變简逮。
就像你去復(fù)印一份資料,復(fù)印件你怎么畫(huà)都行尿赚,原件內(nèi)容始終是不變的散庶,而引用數(shù)據(jù)類(lèi)型是,你拿去復(fù)印時(shí)凌净,不小心被幫你復(fù)印的人弄了幾筆上去悲龟,原件內(nèi)容也就改變了。
s1 和 s2 是基本數(shù)據(jù)類(lèi)型冰寻,s1 和 s2 被交換后须教,原來(lái)的s1 和 s2 保持不變,可以拿第一個(gè)代碼對(duì)比第二個(gè)代碼看斩芭。
如果你喜歡這篇文字轻腺,可關(guān)注微信公眾號(hào):wu_you_lT,有深度好文等你閱讀哦划乖!