在Java中,static代碼塊(也稱為靜態代碼塊或靜態初始化器)在類被加載到JVM(Java虛擬機)時執行。具體來說,當以下幾個條件滿足時,static代碼塊會被執行:
類被加載到JVM中:當一個類被首次引用或者顯式地使用Class.forName()方法加載到一個JVM實例時,該類就會被加載。
類中的靜態變量被初始化:在類被加載后,如果類中的靜態變量被賦值,那么對應的靜態代碼塊會被執行。靜態變量的初始化順序是根據它們在類中的聲明順序。
static代碼塊只執行一次:當一個類被加載并初始化后,其靜態代碼塊只會執行一次。這意味著,無論創建了多少個該類的實例,靜態代碼塊都只會執行一次。
總結一下,static代碼塊的執行時機是在類被加載到JVM時,且僅執行一次。靜態代碼塊通常用于初始化靜態變量和執行一次性的初始化任務。