Java 方法 (Method)
方法是一段執行特定任務的程式碼區塊,可以重複使用。在其他程式語言中也稱為函式 (Function)。
定義方法
存取修飾詞 回傳型別 方法名稱(參數列表) {
// 方法主體
return 回傳值; // 如果有回傳值
}
基本範例
public class Main {
// 沒有參數,沒有回傳值
public static void sayHello() {
System.out.println("Hello!");
}
// 有參數,沒有回傳值
public static void greet(String name) {
System.out.println("Hello, " + name + "!");
}
// 有參數,有回傳值
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
sayHello(); // Hello!
greet("Alice"); // Hello, Alice!
int sum = add(5, 3);
System.out.println(sum); // 8
}
}
方法組成
public static int multiply(int a, int b) {
return a * b;
}
public:存取修飾詞static:靜態方法(屬於類別)int:回傳型別multiply:方法名稱int a, int b:參數列表return a * b:回傳值
回傳型別
void(不回傳值)
public static void printMessage(String msg) {
System.out.println(msg);
// 不需要 return,或用 return; 提前結束
}
回傳基本型別
public static int square(int n) {
return n * n;
}
public static double average(int a, int b) {
return (a + b) / 2.0;
}
public static boolean isPositive(int n) {
return n > 0;
}
回傳物件
public static String formatName(String first, String last) {
return last + ", " + first;
}
public static int[] createArray(int size) {
return new int[size];
}
參數
詳細說明請參考 Java 方法參數。
多個參數
public static int max(int a, int b, int c) {
return Math.max(Math.max(a, b), c);
}
// 呼叫
int result = max(10, 25, 15); // 25
可變參數 (Varargs)
public static int sum(int... numbers) {
int total = 0;
for (int n : numbers) {
total += n;
}
return total;
}
// 呼叫
sum(1, 2, 3); // 6
sum(1, 2, 3, 4, 5); // 15
sum(); // 0
方法多載 (Overloading)
相同方法名稱,但參數不同:
public static int add(int a, int b) {
return a + b;
}
public static double add(double a, double b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
詳細說明請參考 Java 方法多載。
遞迴
方法呼叫自己:
public static int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
// factorial(5) = 5 * 4 * 3 * 2 * 1 = 120
詳細說明請參考 Java 遞迴。
static 方法 vs 實例方法
public class Calculator {
// 靜態方法:用類別名稱呼叫
public static int add(int a, int b) {
return a + b;
}
// 實例方法:需要建立物件
public int multiply(int a, int b) {
return a * b;
}
}
// 使用
int sum = Calculator.add(5, 3); // 靜態方法
Calculator calc = new Calculator();
int product = calc.multiply(5, 3); // 實例方法
實際應用
驗證方法
public static boolean isValidEmail(String email) {
return email != null &&
email.contains("@") &&
email.contains(".");
}
public static boolean isValidPassword(String password) {
return password != null && password.length() >= 8;
}
格式化方法
public static String formatCurrency(double amount) {
return String.format("$%.2f", amount);
}
public static String formatPhone(String phone) {
return phone.replaceFirst("(\\d{4})(\\d{3})(\\d{3})", "$1-$2-$3");
}
計算方法
public static double calculateArea(double radius) {
return Math.PI * radius * radius;
}
public static double calculateBMI(double height, double weight) {
return weight / (height * height);
}
方法命名規則
- 使用 camelCase
- 動詞開頭
- 清楚描述功能
// 好的命名
public void calculateTotal() { }
public boolean isValid() { }
public String getName() { }
public void setAge(int age) { }
// 不好的命名
public void calc() { } // 太短
public void doStuff() { } // 不明確
良好實踐
- 單一職責:一個方法只做一件事
- 適當長度:方法不要太長,超過 20-30 行考慮拆分
- 有意義的名稱:方法名稱要清楚表達功能
- 參數數量:盡量不超過 3-4 個參數