Java方法里参数的传递机制

java方法里参数的传递分为基本数据类型和一用数据类型,首先说明一下基本数据类型和引用数据类型在方法里面参数的

传递机制全部都是值传递机制

值传递:将实参的数值(或者引用)赋值给形参,但是实参和形参完全是两个不相干的变量。

接下来我们分别讲述基本数据类型和引用数据类型:

基本数据类型的方法参数传递不会改变实参的值:

 

 1 package com.heima.work.demo;
 2 
 3 public class Methods {
 4     public static void main(String[] args) {
 5         int a = 3;
 6         int b = 7;
 7         jiaohuanzhi(a, b);
 8         System.out.println("a是" + a + "............" + "b是" + b);
 9         System.out.println("=====================");
10         ceshi cs = new ceshi();
11         jiaohuanyinyong(cs);
12         System.out.println("实参a是" + cs.a + "     " + "实参b是" + cs.b);
13 
14     }
15 
16     private static void jiaohuanyinyong(ceshi cs) {
17         int tamp;
18         tamp = cs.a;
19         cs.a = cs.b;
20         cs.b = tamp;
21         System.out.println("方法交换之后引用的a是" + cs.a + "b是" + cs.b);
22         cs = null;//这里将形参引用断开,但是不会影响实参
23 
24     }
25 
26     private static void jiaohuanzhi(int a, int b) {
27 
28         int tamp;
29         tamp = a;
30         a = b;
31         b = tamp;
32         System.out.println("方法里交换之后的a的值是:" + a + "..........." + "b的值是:" + b);
33 
34 
35     }
36 }
37 
38 class ceshi {
39     int a = 1;
40     int b = 6;
41 
42 
43 }

 

运行结果是:

 

 

可以看出对于基本数据类型来说,形参数值的改变并不会影响实参数值。参考下面的示意图:

 

 

 

但是我们看上面的代码,引用数据类型的数值在经过方法的交换之后,里面的值确实发生了给变呀,接下来我们就对引用数据

的值交换进行讲解:

引用数据类型值交换:

引用数据类型的参数传递也是值交换原理,只不过基本数类型是将数据值赋值给形参,但是引用数据类型是将引用地址赋值给形参:

 

 

 

基本数据类型根本就不涉及内存,形参和实参没有任何的联系,但是引用数据类型形参和实参指向的是同一块内存空间,两个指向同一对象的引用,通过

一个引用对对象操作另一个引用访问也会发生改变,因为内存中的数据已经改变,但是他们不是同一个引用,形参引用最后赋值为null,实参引用一样可以访问

内存就是很好的证明。

 

posted @ 2020-08-31 11:03  Joker-0927  阅读(305)  评论(0编辑  收藏  举报
// 侧边栏目录