Java中傳遞參數(shù)時(shí)有兩種方式,分別是值傳遞和類傳遞。
值傳遞指的是將參數(shù)的值拷貝一份,傳遞給方法或函數(shù),屬于一種單向傳遞。這種傳遞方式在Java中使用較多。
public static void main(String[] args) { int a = 10; System.out.println("處理前a的值:" + a); changeValue(a); System.out.println("處理后a的值:" + a); } private static void changeValue(int a) { a = 20; System.out.println("changeValue方法中a的值:" + a); }
在以上代碼中,通過調(diào)用changeValue方法改變了a的值,但是輸出結(jié)果卻沒有改變。這是因?yàn)樵赾hangeValue方法中改變的a是一個(gè)新的變量,與main方法中的a并不是同一個(gè)變量。
類傳遞指的是將參數(shù)引用傳遞給方法或函數(shù),可以將方法內(nèi)部對(duì)參數(shù)的任何修改,反映到調(diào)用其的方法中。
public static void main(String[] args) { MyClass mc = new MyClass(); System.out.println("處理前MyClass中a的值:" + mc.a); changeValue(mc); System.out.println("處理后MyClass中a的值:" + mc.a); } private static void changeValue(MyClass mc) { mc.a = 20; System.out.println("changeValue方法中MyClass中a的值:" + mc.a); } private static class MyClass { public int a = 10; }
在以上代碼中,MyClass類型被定義成內(nèi)部類的形式。通過調(diào)用changeValue方法改變了mc對(duì)象中a的值,輸出結(jié)果也相應(yīng)改變。