java 靜態變量在編譯階段就已經明確位置, 所以靜態變量的聲明與初始化在編碼順序上可以顛倒。也就是說可以先編寫初始化的代碼,再編寫聲明代碼。如:
public class Test { // 靜態變量的初始化 static { _i = 10; } // 靜態變量的聲明 public static int _i; }
所以如下代碼可以被重讀下
public class Test { static { _i = 20; } public static int _i = 10; public static void main(String[] args) { System.out.println(_i); } } //等價於如下代碼 public class Test { public static int _i; static { _i = 20; _i = 10; } public static void main(String[] args) { System.out.println(_i); } }
