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

Java 方法全解析:定義、調用、參數傳遞與重載

     編輯:Java 相關知識

方法的四大要素

  • 方法名:標識符,駝峰命名(如 calculateArea)
  • 參數列表:輸入資料(零個或多個),稱「形式參數」
  • 方法體:處理邏輯(加工過程)
  • 返回值:輸出結果(可為 void 表示無返回)

方法調用的三種形式

// 1. 無返回值,單獨調用
methodName(argList);

// 2. 有返回值,接收結果
ReturnType var = methodName(argList);

// 3. 返回值不需使用,直接忽略(不推薦)
methodName(argList);

鐵律:實際參數(實參)的類型、個數、順序必須與形式參數(形參)完全匹配。

方法定義語法

修飾符 返回類型 方法名(參數類型 參數名, ...) {
    // 方法體
    return 返回值; // void 方法可省略或寫 return;
}

無返回值方法

public static void greet(String name) {
    System.out.println("Hello, " + name);
}

有返回值方法

public static String ageGroup(int age) {
    if (age > 0 && age < 18) return "未成年";
    else if (age < 35) return "青年";
    else if (age < 55) return "中年";
    else if (age < 150) return "老年";
    else return "年齡輸入錯誤";
}

參數傳遞:值傳遞 vs 引用傳遞

Java 只有值傳遞,但分兩種情況:

參數類型傳遞內容方法內修改是否影響外部
基本類型數值的副本不影響
引用類型引用的副本(指向同一物件)可修改物件內部狀態,但無法改變外部引用指向

示例:基本類型不變

public static void modifyPrimitive(int x) {
    x = 20; // 修改副本
}
int a = 10;
modifyPrimitive(a);
System.out.println(a); // 輸出 10

示例:引用類型可改物件內容

public static void modifyObject(StringBuilder sb) {
    sb.append(" World"); // 修改物件內容
}
StringBuilder s = new StringBuilder("Hello");
modifyObject(s);
System.out.println(s); // 輸出 "Hello World"

示例:引用類型無法換物件

public static void swapRef(StringBuilder sb) {
    sb = new StringBuilder("New"); // 只改變區域引用指向
}
StringBuilder s = new StringBuilder("Old");
swapRef(s);
System.out.println(s); // 輸出 "Old",外部引用未變

方法重載

同一類中,方法名相同但參數列表不同(類型、個數、順序至少一項不同)。返回類型、修飾符、拋出異常均可不同,但不能僅靠返回類型區分。

public int sum(int a, int b) { return a + b; }
public double sum(double a, double b) { return a + b; }
public int sum(int a, int b, int c) { return a + b + c; }

方法的作用

  • 模組化:將獨立功能封裝,降低複雜度
  • 復用:多處調用,避免重複代碼
  • 可維護性:修改邏輯只需改一處
  • 可讀性:主流程清晰,細節隱藏在方法內

最佳實踐建議

  1. 單一職責:一個方法只做一件事
  2. 命名語義化:動詞開頭,如 calculateTotal、isValid
  3. 參數不超過 3–4 個,過多考慮封裝為物件
  4. 儘早返回,減少巢狀層級
  5. 善用 @param、@return、@throws 文檔註解
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved