java的方法參數傳遞方式有兩種,以值傳遞和引用傳遞。
1.以值傳遞
參數型別是int,long等基本資料型別(八大基本資料型別),參數傳遞的過程採用值拷貝的方式
程式碼片段2:
public class Test { public static void main(String[] args) { int a = 5; fun(a); System.out.println(a);// 输出结果为5 } private static void fun(int a) { a += 1; } }
結論:按值傳遞,不會改變原來的值,引用傳遞,會改變引用物件的值
##再看下面這種情況:程式碼片段3:
public class Test { public static void main(String[] args) { A a = new A(5); fun(a); System.out.println(a.a);// 输出结果为6 } private static void fun(A a) { a.a += 1; } static class A { public int a; public A(int a) { this.a = a; } } }這裡明明是引用傳遞,為什麼沒有改變物件的值呢?
這裡其實是使用了基本資料型別封裝類別的自動裝箱功能。
Integer a = 5,編譯後實際為Integer a = Integer.valueOf(5),檢視Integer的原始碼,並沒有改變原始物件的值,只是將其引用指向了另一個物件。 ####################### #######程式碼片段3中的過程可以用下圖來表示:########################直接改變了堆疊幀中的地址,指向另一個對象,所以並沒有改變原來的值。 ######【推薦課程:###Java影片教學###】 #############以上是java方法參數的兩種傳遞方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!