本類中靜態資源的加載順序
-->按順序加載
下面給出一個例子
class A{
static A a=new A();
static int a=10;
static int b;
public A(){
a++;
b++;
}
}
//測試類
public class Test{
System.out.println(A.a);
System.out.println(A.b);
}
結果是:
10
1
這是爲什麼呢?答案看完就知道了。
再來看下面代碼
class A{
static int a=10;
static int b;
static A a=new A();
public A(){
a++;
b++;
}
}
//測試類
public class Test{
System.out.println(A.a);
System.out.println(A.b);
}
結果是:
11
1
可能還有點不懂,那麼測試一下,在構造方法的第一行分別輸出 a 和 b 的值
- 第一個代碼塊的構造方法輸出的是 0 0
- 第二個代碼塊的構造方法輸出的是 10 0
這次是不是懂了,就是靜態資源是按順序加載的, 在第一行創建靜態對象時用到了沒有被初始化的類變量,默認值都是0,在靜態對象創建完後又給 a 重新賦值。