Java中值传递的实质,形式参数与实际参数。引用传递。
值传递 package ch5; /** * Created by Jiqing on 2016/11/9. */ public class Transfer { public static void swap(int a,int b) { int tmp = a; a = b; b = tmp; System.out.println("swap方法中,a的值是"+a+",b的值是"+b); } public static void main(String[] args) { int a = 6; int b = 9; swap(a,b); // swap方法中,a的值是9,b的值是6 System.out.println("交换结束后,a的值是"+a+",b的值是"+b); // 交换结束后,a的值是6,b的值是9 // 传参数相当于复制,swap中的a、b是复制品 } } 参数传递相当于复制一个孙悟空,真身没受影响。 真身就是实参,复制的孙悟空就是形式参数。 当系统开始执行方法时,系统为形式参数初始化,把实参变量的值赋给形参变量,方法里操作的只是形式参数而已。 实参本身没有受到影响。 引用传递(对象引用,指向对象地址) package ch5; /** * Created by Jiqing on 2016/11/9. */ public class DataWrap { int a; int b; } package ch5; /** * Created by Jiqing on 2016/11/9. */ public class ReferenceTransfer { // 引用传递 public static void swap(DataWrap dw) { // 复制一个dw的引用,指向对象 int tmp = dw.a; dw.a = dw.b; dw.b = tmp; System.out.println("swap方法中,a的值是"+dw.a+",b的值是"+dw.b); dw = null; // 把它杀掉 } public static void main(String[] args) { DataWrap dw = new DataWrap(); dw.a = 6; dw.b = 9; swap(dw);//swap方法中,a的值是9,b的值是6 System.out.println("交换结束后,a的值是"+dw.a+",b的值是"+dw.b);//swap方法中,a的值是9,b的值是6 } } 本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6049142.html,如需转载请自行联系原作者