天天看点

java方法的参数传递规则_Java方法里参数的传递机制

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

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

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

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

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

1 packagecom.heima.work.demo;2

3 public classMethods {4 public static voidmain(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 = newceshi();11 jiaohuanyinyong(cs);12 System.out.println("实参a是" + cs.a + " " + "实参b是" +cs.b);13

14 }15

16 private static voidjiaohuanyinyong(ceshi cs) {17 inttamp;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, intb) {27

28 inttamp;29 tamp =a;30 a =b;31 b =tamp;32 System.out.println("方法里交换之后的a的值是:" + a + "..........." + "b的值是:" +b);33

34

35 }36 }37

38 classceshi {39 int a = 1;40 int b = 6;41

42

43 }

运行结果是:

java方法的参数传递规则_Java方法里参数的传递机制

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

java方法的参数传递规则_Java方法里参数的传递机制

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

的值交换进行讲解:

引用数据类型值交换:

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

java方法的参数传递规则_Java方法里参数的传递机制

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

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

内存就是很好的证明。