Java中值传递的实质,形式参数与实际参数。引用传递。
2016-11-09 22:33
253 查看
值传递
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 } }
相关文章推荐
- Java中函数参数的传递形式是值传递 还是引用传递
- Java中的参数传递到底是引用还是值传递?
- Java方法强制传递引用参数(做为返回值),改变被传递参数值。
- Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)
- java 学习 方法参数按值传递和按引用传递:
- java中值传递 和 引用传递
- Java中的参数传递方式到底是引用传递还是值传递?
- 关于Java的引用和函数参数传递
- C++的引用传递、指针传递参数在java中的相应处理方法
- Java参数传递造成参数值改变的情况--值传递和引用传递的初步理解
- Java中函数参数的传递是值传递还是引用传递
- Java函数参数的值传递和引用传递
- 在Java中方法参数的传递,对象是传递引用
- [javase] java中值传递还是引用传递的较好说明
- java参数传递究竟是按值呢,还是引用?
- 由JAVA参数传递引发的对引用的思考
- java 中值传递与引用传递以及方法中别名的问题
- java中值传递、引用传递及String类特性
- Java参数传递过程中 传形参和传引用问题讨论
- java中关于参数传递问题的解释(传值与传引用的若干问题的解释)