//執行順序:(優先權從高到低。)
靜態程式碼區塊>mian方法>建構程式碼區塊>建構方法。
其中靜態程式碼區塊只執行一次。構造程式碼區塊在每次創建物件是都會執行。
1.普通程式碼區塊
public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。 *普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行” * */ { System.out.println("这里是普通代码块A"); } //new A(); { System.out.println("这里是普通代码块B"); } }
執行結果:這裡是普通程式碼區塊A
這裡是普通程式碼區塊B
2.靜態程式碼區塊與建構程式碼關鍵字聲明的程式碼區塊。
2 靜態程式碼區塊不能存在於任何方法體內。
2 靜態程式碼
2 靜態程式碼區塊不能存在於任何方法體內。區塊不能直接存取靜態實例變數和實例方法,需要透過類別的實例物件來存取。程式碼區塊在建立物件時被調用,每次建立物件都會被調用,並且建構程式碼區塊的執行次序優先於類別建構函式。
這裡是普通程式碼區塊A這裡是普通程式碼區塊//類別中的物件被建立時執行,每創建一次執行一次,在加一句new structure(); 執行結果為:
這裡是普通程式碼區塊B
3.概要總結
public class structure { { System.out.println("这里是普通代码块");//所有类中有一个默认的构造函数,这里的代码块为构造代码块,在类中的对象被创建时执行 } public static void main(String[] args) { /*普通代码块: *直接定义在在方法或语句中出现”{普通代码的执行语句}“的就称为普通代码块。 *普通代码块执行顺序由他们在代码中出现的次序决定--“先出现先执行” * */ { System.out.println("这里是普通代码块A"); } new structure();//第二次类加载时静态代码块不执行 //new A(); { System.out.println("这里是普通代码块B"); } } static{ System.out.println("这里是静态代码块"); } }
執行結果:
這裡是靜態程式碼區塊
這裡是普通程式碼區塊A這裡是A中的普靜態程式碼區塊1
區塊1這裡是A中的普通程式碼區塊2
這裡是普通程式碼區塊B
優先權總結:靜態程式碼區塊2
更多深入淺析Java中普通程式碼區塊、建構程式碼區塊與靜態程式碼區塊相關文章請關注PHP中文網!