91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

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

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

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

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

  • 2,父類優先于子類進行初始化。

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

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

  1. 父類靜態變量

  2. 父類靜態代碼塊

  3. 子類靜態變量

  4. 子類靜態代碼塊

  5. 父類非靜態變量

  6. 父類非靜態代碼塊

  7. 父類構造函數

  8. 子類非靜態變量

  9. 子類非靜態代碼塊

  10. 子類構造函數。

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

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();

          }

          }

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

程序的運行結果為:

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

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

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

向AI問一下細節

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

AI

确山县| 惠水县| 霍林郭勒市| 古浪县| 砚山县| 泾川县| 岫岩| 体育| 光泽县| 逊克县| 台州市| 都昌县| 荔波县| 油尖旺区| 洪洞县| 嘉义市| 泽普县| 大化| 绍兴市| 友谊县| 拉萨市| 新安县| 壶关县| 梁平县| 郓城县| 河北省| 渝中区| 葫芦岛市| 福贡县| 滨海县| 米易县| 伊通| 鸡东县| 丽水市| 唐河县| 太谷县| 巨野县| 渑池县| 龙川县| 罗江县| 东安县|