Java中的方法參數傳遞方式有兩種:值傳遞和地址傳遞。值傳遞指的是將方法外的變量賦值給方法內的參數,只是將變量值復制給參數,方法內對參數的操作不會對原變量產生影響。地址傳遞就是將方法外的變量地址傳遞給方法內的參數,參數得到原變量的地址后,可以直接修改原變量的值。
// 值傳遞示例 public class ValuePassing { public static void main(String[] args) { int num1 = 10; int num2 = 20; swap(num1, num2); System.out.println(num1); // 輸出 10 System.out.println(num2); // 輸出 20 } public static void swap(int a, int b) { int temp = a; a = b; b = temp; } } // 地址傳遞示例 public class ReferencePassing { public static void main(String[] args) { int[] arr = {1, 2, 3}; processData(arr); for (int i = 0; i< arr.length; i++) { System.out.print(arr[i] + " "); // 輸出 4 5 6 } } public static void processData(int[] arr) { for (int i = 0; i< arr.length; i++) { arr[i] += 3; } } }
以上代碼中,值傳遞示例中的swap方法并未改變num1和num2的值,因為方法內對a和b的操作只是改變了它們的值,而并沒有影響到外部變量。地址傳遞示例中的processData方法通過arr參數直接修改了外部變量arr中的值,這是因為數組在Java中是引用類型,它的數組變量存儲的是數組的地址。