《Java中方法的参数传递方式只有一种:值传递》

时间:2021-03-05 21:23:45
 1 //方法的参数传递机制(1);基本类型做形参的传递。
 2 class  PrimitiveTransferTest
 3 {
 4     public static void swap(int a,int b)
 5     {
 6         //下面代码实现a和b交换
 7         int temp = a;
 8         a = b;
 9         b = temp;
10         System.out.println("swap方法里,a的值是:"+a+",b的值是:"+b);
11     }
12     public static void main(String[] args) 
13     {
14         int a = 6;
15         int b = 9;
16         swap(a,b);
17         System.out.println("交换结束后,变量a的值是:"+a+",变量b的值是:"+b);
18     }
19 }
20 
21 
22 //方法的参数传递机制(2);引用类型做形参的传递。
23 class DataWrap
24 {
25     int a;
26     int b;
27 }
28 class ReferenceTransferTest 
29 {
30     public static void swap(DataWrap dw)
31     {
32         //下面代码实现a和b的交换。
33         dw.a = dw.a^dw.b;
34         dw.b = dw.a^dw.b;
35         dw.a = dw.a^dw.b;
36         System.out.println("swap方法里,a成员变量的值是:"+dw.a+",b成员变量的值是:"+dw.b);
37         System.out.println(dw);//DataWrap@2a139a55
38         //dw = null;//这里是为了证明若把这个dw的应用指向空,则不会影响main方法里的dw的指向。
39     }
40     public static void main(String[] args) 
41     {
42         DataWrap dw = new DataWrap();
43         dw.a = 6;
44         dw.b = 9;
45         swap(dw);
46         System.out.println("交换结束后,a成员变量的值是:"+dw.a+",b成员变量的值是:"+dw.b);
47         System.out.println(dw);//DataWrap@2a139a55 //证明了引用传递传递的是地址(也就是指针)其实也是值(址)传递
48     }
49 }

从以上两个例子可看出,Java中的方法的参数传递只有一种形式,就是值传递。