1. 程式人生 > >類的載入和初始化順序

類的載入和初始化順序

類載入以及初始化的順序是:

->類的靜態成員初始化分配記憶體(有父類的先父類,然後自己)

->然後main方法執行

->類初始化{類非靜態成員的初始化,然後執行構造器(有父類的先給父類的非靜態成員初始化,然後父類的構造器)}

例項(網易實習2016):



最終的輸出為:

3 6 7 2 1 5 4

關於以下application,說法正確是什麼?

public class Test {
    static int x=10;
    static {x+=5;}
    public static void main(String[] args) //4
    {
        System.out.println("x="+x);
    }
    static{x/=3;};
}//9

A. 4行與9行不能通過編譯,因為缺少方法名和返回型別

B. 編譯通過,執行結果是:x=5

C. 編譯通過,執行結果是:x=3

D. 9行不能通過編譯,因為只能有一個靜態初始化器

虛擬機器在首次載入Java類時,會對靜態初始化塊、靜態成員變數、靜態方法進行一次初始化。我們不要去糾結這裡的順序,一般來說我們只需要知道,靜態方法一般在最後。(靜態初始化塊(變數和方法)可以有多個,但是注意被載入時只能被初始化或者執行一次)。然後執行main方法。