類的載入和初始化順序
阿新 • • 發佈:2019-02-03
類載入以及初始化的順序是:
->類的靜態成員初始化分配記憶體(有父類的先父類,然後自己)
->然後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方法。