JAVA面試題 java面試題高級


JAVA面試題 java面試題高級

文章插圖
大家好,小跳來為大家解答以上的問題 。java面試題高級,JAVA面試題這個很多人還不知道,現在讓我們一起來看看吧!
1、這個是類的初始化順序問題 類只有在使用New調用創建的時候才會被JAVA類裝載器裝入 2、JAVA類首次裝入時,會對靜態成員變量或方法進行一次初始化,但方法不被調用是不會執行的 , 靜態成員變量和靜態初始化塊級別相同,非靜態成員變量和非靜態初始化塊級別相同 。
2、 先初始化父類的靜態代碼--->初始化子類的靜態代碼--> 初始化父類的非靜態代碼--->初始化父類構造函數---> 初始化子類非靜態代碼--->初始化子類構造函數 3、創建類實例時,首先按照父子繼承關系進行初始化 4、類實例創建時候,首先初始化塊部分先執行,然后是構造方法;然后從 本類繼承的子類的初始化塊執行,最后是子類的構造方法 上例中類A類B都有靜態代碼static從main函數開始: System.out.println(" ");輸出空格 A ab = new B();聲明為類A但初始化為類B 因為編譯器是從左向右進行的,所以先是A ab; 執行System.out.print("1"); 因為沒有new A(); 所以不執行類A的構造函數.那為什么會輸出2呢? 是因為B類是繼承A類的,所是在執行new B(); 的時候,執行順序是初始化System.out.print("a");然后先父類后子類,static代碼只執行一次(已執行過); 執行System.out.print("2");執行System.out.print("b");執行System.out.println(" ");之后是ab = new B(); A,B中的static都已被執行過, 所以只執行構造函數,因B類有父類A,所以先執行A 類的構 造函數System.out.print("2");再執行B類的構造函數 System.out.print("b"); 。
【JAVA面試題 java面試題高級】本文到此分享完畢,希望對大家有所幫助 。