1. 程式人生 > >塊,靜態塊程式碼執行順序

塊,靜態塊程式碼執行順序

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方法>構造程式碼塊>構造方法。

其中靜態程式碼塊只執行一次。構造程式碼塊在每次建立物件是都會執行。