首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 方法重載與參數傳遞機制深度解析

     編輯:Java 相關知識

7.5 方法相同性判定:Java 獨特規則

Java 中**方法相同**定義:方法名 + 參數列表完全一致(參數個數、類型、順序),參數名稱可不同。訪問控制符、返回類型、修飾符**不影響**相同性判定。

public void test(int a, double[] d)
private int test(int i, double[] d1)  // 視為相同方法,同類中不可共存

7.6 方法重載:同名異參的藝術

定義:同一類中,多個方法名相同但參數列表不同(個數/類型/順序任一差異)。

核心價值:功能相似的操作統一命名,提升 API 易用性(JDK 大量應用)。

public void a(int a) {}
public int a() {}                    // 返回類型不同不影響重載
public void a(int a, String s) {}

最佳實踐:重載方法盡量保持訪問控制符、修飾符、返回類型一致,降低認知負擔。

7.7 參數傳遞機制:值傳遞與引用傳遞的本質

Java **只有值傳遞**,但「值」的含義因類型而異:

類型分類包含類型傳遞內容方法內修改影響
基本類型 + String8種基本類型、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 的關鍵。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved