方法,必須有其所在類或對象調用時才有意義,若方法有參數:
形參:方法聲明時的參數;
實參:方法調用時實際傳給形參的參數值;
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。