方法聲明創建功能,**調用才能執行**。J2SE 程序從 main 方法入口開始,所有方法必須直接/間接被 main 調用才會執行。
遇到調用 → 跳轉方法內部 → 執行至 return 或結束 → 返回調用點繼續向下。
方法分靜態方法(有 static)與非靜態方法(無 static),形成四種調用組合:
| 調用方 | 被調用方 | 調用語法 | 示例 |
|---|---|---|---|
| 非靜態 | 非靜態 | 直接調用 | method() |
| 非靜態 | 靜態 | 直接調用 | method() |
| 靜態 | 靜態 | 直接調用 | method() |
| 靜態 | 非靜態 | 需創建對象 | new Class().method() |
方法名(參數值...); // 可嵌套:max(max(a,b), max(c,d))
返回值可接收可忽略,調用表達式類型即返回類型。
public class CallMethod2 {
public static void main(String[] args) {
CallMethod2 cm = new CallMethod2(); // 創建對象
int n = cm.max(1, 2); // 對象名.方法名
}
public int max(int a, int b) { ... } // 非靜態方法
}
本質:非靜態方法屬於對象,必須通過對象實例調用。
public class CallMethod3 {
public static void main(String[] args) {
System.out.println(1);
printTest();
System.out.println(2);
max(10, 20);
System.out.println(3);
}
public static int max(int a, int b) {
System.out.println("進入max方法內部!");
return a > b ? a : b;
}
public static void printTest() {
System.out.println("進入printTest方法內部!");
System.out.println("printTest方法執行完畢!");
}
}
1
進入printTest方法內部!
printTest方法執行完畢!
2
進入max方法內部!
3
清晰展示了**調用時跳轉、返回後續續**的棧幀執行模型。
不同類之間的方法調用(類名.靜態方法、對象.非靜態方法)將在類與對象章節詳細講解。