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是复制品
    }
}

422101-20161109223009108-1028934286.png

422101-20161109223014983-1248259070.png

422101-20161109223019764-1505261614.png

参数传递相当于复制一个孙悟空,真身没受影响。
真身就是实参,复制的孙悟空就是形式参数。
当系统开始执行方法时,系统为形式参数初始化,把实参变量的值赋给形参变量,方法里操作的只是形式参数而已。
实参本身没有受到影响。

引用传递(对象引用,指向对象地址)

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
    }
}

422101-20161109224617795-462494706.png

422101-20161109224626702-580732437.png

422101-20161109224633702-1236705140.png



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6049142.html,如需转载请自行联系原作者

相关文章
|
7月前
|
安全 Java
【面试题精讲】为什么 Java 不引入引用传递呢?
【面试题精讲】为什么 Java 不引入引用传递呢?
|
14天前
|
JavaScript 前端开发 Java
【JAVA面试题】什么是引用传递?什么是值传递?
【JAVA面试题】什么是引用传递?什么是值传递?
|
4月前
|
存储 搜索推荐 Java
Java 数组、二维数组、值传递和引用传递的区别
Java 数组、二维数组、值传递和引用传递的区别
45 0
|
8月前
|
Java
JAVA参数传值机制中值传递和引用传递
JAVA参数传值机制中值传递和引用传递
63 0
|
10月前
|
存储 缓存 算法
java引用传递引发的一系列问题
最近在学习java引用传递,其实引用传递就是和内存分配有关;
97 1
|
12月前
|
Java
【java筑基】——为什么java中方法的参数传递机制没有引用传递
【java筑基】——为什么java中方法的参数传递机制没有引用传递
|
12月前
|
Java iOS开发
【Java基础】值传递和引用传递?引用传递的本质是什么?
【Java基础】值传递和引用传递?引用传递的本质是什么?
|
Java
辨析Java方法参数中的值传递和引用传递
辨析Java方法参数中的值传递和引用传递
77 0
|
存储 Java
Java开发——6.内存分配(堆、栈以及参数的值传递+引用传递)
内存分配(堆、栈以及参数的值传递+引用传递)
Java开发——6.内存分配(堆、栈以及参数的值传递+引用传递)