public class Ques0306 {
static int i = 1;
static { ++i; } // 靜態區塊 1
public static void main(String[] args) {
increment(i, 3);
display(i);
}
static void increment(int n, int m) { n += m; }
static void display(int n) { System.out.println(n); }
static { ++i; } // 靜態區塊 2
}
主程式輸出結果為何?
1static int i = 1; → i = 1static { ++i; } → i = 2static { ++i; } → i = 3
main 執行:increment(i, 3) → 參數 n 接收 i 的**值複製** (3),方法內 n = 6,**不影響** 原 i。display(i) → 傳入 i (仍為 3),輸出 3。
i 為物件 (如 Integer),傳遞的是引用值複製,仍無法改變原引用指向,但可修改物件內部狀態 (若可變)。increment 會修改 i → 錯,基本型別不可變。