Java-靜態代碼塊、非靜態代碼塊、靜態方法,非靜態方法

執行順序:靜態代碼塊--非靜態代碼塊--默認構造方法--普通方法

使用地方:非靜態代碼塊可在普通方法中定義(不過作用不大)。靜態代碼塊必須在類中進行

使用場景:靜態代碼塊可用來初始化一些項目最常用的變量或對象

                  靜態方法可用作不創建對象也可能需要執行的代碼

執行情況:靜態代碼塊在類被加載的時候自動運行(通俗點講就是new後自動執行了靜態代碼塊)

                  靜態方法只有在被調用的時候才執行

訪問權限:非靜態方法既可以訪問靜態數據成員 又可以訪問非靜態數據成員,而靜態方法只能訪問靜態數據成員
                  非靜態方法既可以訪問靜態方法又可以訪問非靜態方法,而靜態方法只能訪問靜態數據方法

實例:

public class Static {
	//默認構造方法
	public Static() {
		System.out.println("<<<<<<<<<<默認構造方法<<<<<<<<<");
	}
	
	//非靜態代碼塊
	{
		System.out.println("<<<<<<<<<<非靜態代碼塊<<<<<<<<<");
	}

	//靜態代碼塊	
	static{
		System.out.println("<<<<<<<<<<靜態代碼塊<<<<<<<<<");
	}

	//普通方法中的非靜態代碼塊
	public static void test() {
		{
			System.out.println("<<<<<<<<<<普通方法中的非靜態代碼塊<<<<<<<<<");
		}		
	}

}
public class DoStatic {
	public static void main(String[] args) {
		//new出對象後,執行test(),因爲new後,靜態代碼塊和構造方法都被執行
		Static s = new Static();
		s.test();
		//不new出對象後,執行test(),因爲沒有new的動作,靜態代碼塊和構造方法都不被執行,只執行test()方法
		Static.test();
	}
}

結果:

<<<<<<<<<<靜態代碼塊<<<<<<<<<
<<<<<<<<<<非靜態代碼塊<<<<<<<<<
<<<<<<<<<<默認構造方法<<<<<<<<<
<<<<<<<<<<普通方法中的非靜態代碼塊<<<<<<<<<
<<<<<<<<<<普通方法中的非靜態代碼塊<<<<<<<<<

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章