方法是 Java 程式碼復用的基本單元。本文從定義語法、核心特性、設計思路、重載機制四個維度,配合大量程式碼範例,幫助初學者建立扎實的方法設計思維。
修飾符 返回值類型 方法名(參數類型 形式參數1, 參數類型 形式參數2, ...) {
執行語句;
return 返回值;
}
關鍵術語辨析:
voidvoid 方法末尾的 return 可省略限制:方法內只能呼叫其他方法,不能定義方法(Java 無巢狀方法)。
寫方法前先想清兩件事:
這是從需求到簽名的標準化轉化過程。
int x = 4;
System.out.println(x * 3 + 5);
x = 6;
System.out.println(x * 3 + 5); // 邏輯重複
public static void getResult(int num) {
System.out.println(num * 3 + 5);
return; // void 方法可省略
}
public static int getSum(int x, int y) {
return x + y; // 結果交給調用者決定是否列印
}
public static boolean compare(int a, int b) {
return a == b; // 三元/if-else 簡化
}
public static int getMax(int a, int b) {
return (a > b) ? a : b;
}
// 矩形:行、列作參數,void 返回
public static void draw(int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) System.out.print("*");
System.out.println();
}
}
// 九九乘法表
public static void print99() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++)
System.out.print(j + "*" + i + "=" + (j*i) + "\t");
System.out.println();
}
}
功能語義相同,但處理資料型別或個數不同。例如加法運算:
int add(int x, int y) { return x + y; }
int add(int x, int y, int z) { return add(x, y) + z; }
double add(double x, double y) { return x + y; }
void show(int a, char b, double c) {}
void show(int x, char y, double z) {} // ✗ 參數列表相同
int show(int a, double c, char b) {} // ✓ 參數型別順序不同
void show(int a, double c, char b) {} // ✓ 同上
boolean show(int c, char b) {} // ✓ 參數個數不同
void show(double c) {} // ✓ 參數個數不同
double show(int x, char y, double z) {} // ✗ 僅返回值不同,編譯錯誤
重載本質是「語義一致、參數多態」。濫用重載會造成呼叫端混淆,建議:
print(int) vs print(long))public static void main(String[] args) { ... }
static:JVM 無需實例化即可呼叫void:不向 JVM 返回值String[] args:接收命令列參數每個類可擁有自己的 main,方便單元測試與獨立執行。
方法設計的核心是「高內聚、低耦合」。善用「兩個明確」推導簽名,合理應用重載減少命名認知負擔,始終記住:方法服務於呼叫者,結果由呼叫者支配。這是從寫程式碼走向設計程式碼的關鍵一步。