1. 程式人生 > >static{}塊的作用

static{}塊的作用

{} 轉載 創建對象 虛擬 字節 log 否則 mat 什麽是

本文轉載自: https://www.cnblogs.com/caolaoshi/p/7824748.html

static{}塊,會且僅會在類被加載時執行一次,多用於定義靜態變量或執行靜態方法。

什麽是類加載?即JAVA虛擬機通過輸入流將磁盤中的字節碼(.class)文件讀入虛擬機並保存起來的過程,在一個生命周期中一個類只被加載一次

這並不意味著會立馬加載,原則是延遲記載,能少加載就少加載,盡量減少虛擬機空間的使用。

加載時機:

1.第一次創建此類對象

2.調用此類靜態方法或訪問靜態屬性

3.加載此類的子類

4.創建對象引用不加載類

5.子類調用父類的靜態方法時

(1)當子類沒有覆蓋父類的靜態方法時,只加載父類,不加載子類
(2)當子類有覆蓋父類的靜態方法時,既加載父類,又加載子類

6.訪問靜態常量,如果編譯器可以計算出常量的值,則不會加載類,例如:public static final int a =123;否則會加載類,例如:public static final int a = math.PI

static{}塊的作用