java之方法的參數傳遞(值傳遞和引用傳遞)


方法,必須有其所在類或對象調用時才有意義,若方法有參數:

形參:方法聲明時的參數;

實參:方法調用時實際傳給形參的參數值;

java的實參如何傳入方法呢?

首先要明確:變量分為兩大類:基礎數據類型、引用數據類型

基礎數據類型參數傳遞方式只有一種:值傳遞。即將實際參數值的副本(復制品)傳入方法內,而參數本身不受影響;

public class Test{
    
    public static void test(int i) {
        i = 6;
        System.out.println(i);
    }
    
    public static void main(String[] args) {
        int i = 2;
        test(i);
        System.out.println(i);
    }
}

輸出:6 2

說明:也就是說test方法中的i和main方法中的i不是同一個i,它們在內存中的地址是不同的。總之,基本數據類型在傳遞參數的過程中,先將實參的值賦值到形參上,然后再在棧中開辟一個內存,將該值賦給新的變量。

引用數據類型參數傳遞,原來的實例化的對象和新建立的實例化對象都指向同一個對象,因此引用對象值的改變會影響到new出來的對象。

DataSwap.java

public class DataSwap {
    public int a;
}

Test.java

public class Test{
    
    public static void swap(DataSwap ds1) {
        ds1.a = 6;
        System.out.println(ds1.a);
    }
    
    public static void main(String[] args) {
        DataSwap ds = new DataSwap();
        System.out.println(ds.a);
        swap(ds);
        System.out.println(ds.a);
    }
    
}

輸出:0 6 6

說明:對象在實例化ds時,成員變量a被賦予初始值0,然后將ds對象傳給形參ds1,此時,ds和ds1雖然在棧內存中都有着各自的地址,但是它們都指向同一個對象DataSwap,然后通過ds1對象改變a的值,實際上是改變了DataSwap對象的值,因此也會影響到其它實例化的對象,因此最后輸出為0 6 6。


免責聲明!

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



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