public class Main { public static void main(String[] args) { System.out.println("main start---------"); new B(); new A(); System.out.println("main end---------"); } } class A{ public A() { System.out.println("Hello A"); } { System.out.println("I'm A"); } static { System.out.println("I'm static A"); } } class B extends A{ public B() { System.out.println("Hello B"); } { System.out.println("I'm B"); } static { System.out.println("I'm static B"); } } //輸出結果: main start--------- I'm static A I'm static B I'm A Hello A I'm B Hello B I'm A Hello A main end---------
class A{ public A() { System.out.println("構造 A"); } { System.out.println("A block"); } static { System.out.println("static A block"); } } public class B extends A{ public B() { System.out.println("構造 B"); } { System.out.println("B block"); } static { System.out.println("static B block"); } public static void main(String[] args) { System.out.println("-----main start-------"); new B(); new A(); System.out.println("-----main end---------"); } } //執行結果: static A block static B block -----main start------- A block 構造 A B block 構造 B A block 構造 A -----main end---------
//執行順序:(優先級從高到低。)靜態代碼塊>mian方法>構造代碼塊>構造方法。java
其中靜態代碼塊只執行一次。構造代碼塊在每次建立對象是都會執行。code