日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 初始化块

發布時間:2023/12/3 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 初始化块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【0】README

0.1) 本文描述+源代碼均 轉自 core java volume 1, 旨在分享初始化塊 or 靜態初始化塊的調用過程;


【1】初始化塊相關

1.1)前面講過了 兩種初始化數據域的方法: 在構造器中設置值 + 在聲明中賦值;
1.2)java還有第3種機制, 稱為初始化塊: 在一個類的聲明中, 可以包含多個代碼塊,

  • 對以上代碼的分析(Analysis)

    • A1)無論使用哪一個構造器構造對象, id 域 都在對象初始化塊占用被初始化。首先運行初始化塊, 然后才運行構造器的主體部分;
    • A2)這種機制不是必須的, 也不常見;通常 直接將 初始化代碼放在構造器中;

Annotation)即使在類的后面定義,仍然可以在初始化塊中設置域, 這個規則的復雜性足以使 編譯器的實現者頭痛 , 因此建議將初始化塊放在域定義之后;


【2】看荔枝


【3】總結下調用構造器的具體步驟:

  • step1)所有數據域被初始化為默認值(0、false、null);
  • step2)按照在類聲明中出現的次序, 依次執行所有域初始化語句和初始化塊;
  • step3)如果構造器第一行調用了第二個構造器, 則執行第二個構造器主體;
  • step4)執行這個構造器主體;

【4】可以通過提供一個初始化值, 或者使用一個靜態的初始化塊來對靜態域進行初始化

  • 4.1)第一種機制為: private static int nextId = 1;
  • 4.2)引入靜態初始化塊:也可以使用靜態初始化塊對靜態域進行初始化, 將代碼放在一個塊中, 并標記關鍵字 static:

總結

以上是生活随笔為你收集整理的java 初始化块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。