溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java程序初始化順序是怎么樣的

發(fā)布時間:2022-01-13 12:52:31 來源:億速云 閱讀:152 作者:小新 欄目:開發(fā)技術

這篇文章主要為大家展示了“Java程序初始化順序是怎么樣的”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Java程序初始化順序是怎么樣的”這篇文章吧。

Java程序的初始化一般遵循三個原則(優(yōu)先級依次遞減):

  • 1,靜態(tài)對象(變量)優(yōu)先于非靜態(tài)對象(變量)初始化,其中,靜態(tài)對象(變量)只初始化一次,而非靜態(tài)對象(變量)可能會初始化很多次。

  • 2,父類優(yōu)先于子類進行初始化。

  • 3,按照成員變量的定義順序進行初始化。即使變量定義散布于方法定義之中,它們依然在任何方法被調用之前先初始化。

Java程序初始化工作可以在許多不同的代碼塊中完成(例如靜態(tài)代碼塊,構造函數等),它們的執(zhí)行順序如下:

  1. 父類靜態(tài)變量

  2. 父類靜態(tài)代碼塊

  3. 子類靜態(tài)變量

  4. 子類靜態(tài)代碼塊

  5. 父類非靜態(tài)變量

  6. 父類非靜態(tài)代碼塊

  7. 父類構造函數

  8. 子類非靜態(tài)變量

  9. 子類非靜態(tài)代碼塊

  10. 子類構造函數。

下面給出一個不同模塊初始化時執(zhí)行順序的一個例子:

class Base{
           static {
                System.out.println("Base static block");

                     }

           public Base(){
           System.out.println("Base constructor");

           }

 public class Derived extends Base{
           static{
          System.out.println("Drevied static block");

                     }

            {
          System.out.println("Drevied  block");

           }

 public  Derived(){
          System.out.println("Drevied  constructor");

          }

public static void main(String args[]){
                new Derived();

          }

          }

先自己利用上面給出的執(zhí)行順序進行判斷:

程序的運行結果為:

Base static block

Derived static block

Base block

Base constructor

Derived block

Derived constructor

怎么樣,運行結果是否與你的結果一致呢?

最后,我們再來看一道面試真題:

下列代碼運行結果是什么?

  class B extends Object{
          static{
          System.out.println("Load B1");

                     }

         public  B(){
          System.out.println("Create B");

          }

           static{
          System.out.println("Load B2");

           }

           }

class A extends B{
          static{
          System.out.println("Load A");

                     }

         public  A(){
          System.out.println("Create A");

          }

          }

          public class Testclass{
          public static void main(String[ ] args){
                        new A();

          }

          }

運行結果是:

Load B1      LoadB2      Load A     Create B     Create A

在面試中出現的執(zhí)行順序的問題,無非也就是把上面的代碼再換幾個形式,但,萬變不離其宗,只要掌握它的執(zhí)行順序的規(guī)律,所有問題就都可以迎刃而解了

以上是“Java程序初始化順序是怎么樣的”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI