中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

中江县| 新安县| 大丰市| 卓资县| 扶绥县| 麦盖提县| 海安县| 青田县| 闽侯县| 婺源县| 卓资县| 兰坪| 克拉玛依市| 安庆市| 元江| 肇庆市| 绥中县| 皋兰县| 陇西县| 固始县| 苗栗市| 焦作市| 萨迦县| 顺平县| 许昌市| 南溪县| 山阳县| 九龙城区| 彰武县| 温州市| 泰安市| 兴宁市| 白朗县| 伊宁市| 延边| 德钦县| 自贡市| 莒南县| 和林格尔县| 巴彦淖尔市| 遵化市|