方法是 Java 代碼復用的基本單元。本文聚焦參數傳遞本質——值傳遞,通過交換變量經典案例,釐清基本類型與引用類型在方法調用時的內存行為差異。
int temp = a;
a = b;
b = temp;
Java 只有值傳遞。實參的值(基本類型直接是數值,引用類型是對象地址)被**複製**一份傳給形參。
void swapPrimitive(int x, int y) {
int t = x; x = y; y = t; // 僅影響局部副本
}
int a = 1, b = 2;
swapPrimitive(a, b);
// a 仍為 1,b 仍為 2
a、b 存儲數值。x、y,複製數值。x/y,外部 a/b 不變。void modifyArray(int[] arr) {
arr[0] = 99; // 修改堆上對象內容
arr = new int[5]; // 修改局部引用指向,外部不受影響
}
int[] nums = {1, 2, 3};
modifyArray(nums);
// nums[0] 變為 99,但 nums 引用仍指向原數組
arr = ...) → 僅改變局部引用指向,外部引用不變。| 類型 | 棧中存儲 | 傳遞內容 | 方法內修改對外部影響 |
|---|---|---|---|
| 基本類型 | 數值 | 數值副本 | 無 |
| 引用類型 | 地址 | 地址副本 | 可修改對象內容;不可改變外部引用指向 |
list = modify(list))。