方法参数的值传递机制

 1 /*
 2  * 方法的形参的传递机制:值传递
 3  * 
 4  * 1.形参:方法定义时,声明的小括号内的参数
 5  *   实参:方法调用时,实际传递给形参的数据
 6  * 
 7  * 2.值传递机制:
 8  *  如果参数是基本数据类型,此时实参赋值给形参的是实参真是存储的数据值。
 9  */
10 
11 //针对基本数据类型
12 
13 public class ValueTransferTest1 {
14 
15     public static void main(String[] args) {
16         
17         int m = 10;
18         int n = 20;
19         
20         System.out.println("m = " + m + ", n = " + n);
21         //交换两个变量的值的操作
22 //        int temp = m;
23 //        m = n;
24 //        n = temp;
25         
26         ValueTransferTest1 test = new ValueTransferTest1();
27         test.swap(m, n);
28         
29         System.out.println("m = " + m + ", n = " + n);
30         
31     }
32     
33     public void swap(int m,int n){
34         int temp = m;
35         m = n;
36         n = temp;
37     }
38 }

 

 1 //针对引用数据类型
 2 
 3 /*
 4  *  如果参数是引用数据类型,此时实参赋值给形参的是实参存储数据的地址值。
 5  */
 6 
 7 public class ValueTransferTest2 {
 8 
 9     public static void main(String[] args) {
10         Data data = new Data();
11         
12         data.m = 10;
13         data.n = 20;
14         
15         System.out.println("m = " + data.m + ", n = " + data.n);
16 
17         //交换m和n的值
18 //        int temp = data.m;
19 //        data.m = data.n;
20 //        data.n = temp;
21 
22         ValueTransferTest2 test = new ValueTransferTest2();
23         test.swap(data);
24         
25         System.out.println("m = " + data.m + ", n = " + data.n);
26 
27     }
28     
29     public void swap(Data data){
30         int temp = data.m;
31         data.m = data.n;
32         data.n = temp;
33     }
34 }
35 
36 
37 class Data{
38     
39     int m;
40     int n;
41 }

 

1 /*
 2  * 关于变量的赋值
 3  * 
 4  *     如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
 5  *     如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。
 6  * 
 7  */
 8 public class ValueTransferTest {
 9 
10     public static void main(String[] args) {
11         
12         System.out.println("**********基本数据类型:***********");
13         int m = 10;
14         int n = m;
15         
16         System.out.println("m = " + m + ", n = " + n);
17         
18         n = 20;
19         
20         System.out.println("m = " + m + ", n = " + n);
21 
22         System.out.println("***********引用数据类型:********");
23         
24         Order o1 = new Order();
25         o1.orderId = 1001;
26         
27         Order o2 = o1;    //赋值后,o1和o2的地址值相同,都指向了堆空间中同一个对象实体
28         System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " + o2.orderId);
29         
30         o2.orderId = 1002;
31         System.out.println("o1.orderId = " + o1.orderId + ",o2.orderId = " + o2.orderId);
32         
33     }
34 }
35 
36 class Order{
37     int orderId;
38 }
posted @ 2021-12-08 20:46  行呗  阅读(54)  评论(0)    收藏  举报