Java 中**方法相同**定義:方法名 + 參數列表完全一致(參數個數、類型、順序),參數名稱可不同。訪問控制符、返回類型、修飾符**不影響**相同性判定。
public void test(int a, double[] d)
private int test(int i, double[] d1) // 視為相同方法,同類中不可共存
定義:同一類中,多個方法名相同但參數列表不同(個數/類型/順序任一差異)。
核心價值:功能相似的操作統一命名,提升 API 易用性(JDK 大量應用)。
public void a(int a) {}
public int a() {} // 返回類型不同不影響重載
public void a(int a, String s) {}
最佳實踐:重載方法盡量保持訪問控制符、修飾符、返回類型一致,降低認知負擔。
Java **只有值傳遞**,但「值」的含義因類型而異:
| 類型分類 | 包含類型 | 傳遞內容 | 方法內修改影響 |
|---|---|---|---|
| 基本類型 + String | 8種基本類型、String | 數值副本 | 不影響原變量 |
| 引用類型 | 數組、類、接口 | 引用副本(地址) | 影響原對象內容 |
public static void main(String[] args) {
int m = 10;
int[] a = {1,2,34};
test(m, a);
System.out.println(m); // 10 - 基本類型不變
System.out.println(a[0]); // 123 - 引用類型內容被修改
}
public static void test(int n, int[] t) {
n = 0;
t[0] = 123;
}
m = test1(m); // 手動接收返回值覆蓋原變量
int[] n = new int[m.length];
System.arraycopy(m, 0, n, 0, m.length); // 或手動循環拷貝
n[0] = 10; // 修改副本,原數組不變
public int test3(int[] m, int[] n) { ... }
// 實際返回:int返回值 + m數組內容變化 + n數組內容變化
深刻理解參數傳遞規則,是靈活設計 API、避免副作用 Bug 的關鍵。