本類中靜態資源的加載順序

本類中靜態資源的加載順序

-->按順序加載

下面給出一個例子

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 重新賦值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章