同一類中多個方法同名但參數列表不同(類型、個數、順序),編譯器根據方法簽名匹配調用。
public static int max(int a, int b) { return a>b?a:b; }
public static double max(double a, double b) { return a>b?a:b; }
// 調用 max(3,5) → int 版本;max(3.1,5.2) → double 版本
| 變量類型 | 聲明位置 | 作用域範圍 |
|---|---|---|
| 局部變量 | 方法內、代碼塊內 | 從聲明處到包含它的塊結束 |
| 方法參數 | 方法簽名 | 整個方法體 |
| for 循環初始化變量 | for 循環頭部 | 整個循環(初始化、條件、迭代、循環體) |
| 循環體內聲明變量 | 循環體內部 | 從聲明處到循環體結束 |
this.x 訪問成員public class ScopeDemo {
int field = 10; // 成員變量
public void method(int param) { // 參數作用域整個方法
int local = 20; // 局部變量
if (true) {
int block = 30; // 塊作用域
// int local = 40; // 錯誤:嵌套塊不可重複聲明 local
}
for (int i=0; i<3; i++) { // i 作用域整個 for
int inLoop = i; // 作用域僅循環體
}
// System.out.println(i); // 錯誤:i 不可見
}
}