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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM