1、靜態初始化器是由static修飾的一對花括號“{}”括起來的語句組。它的作用和構造方法有待你相似,都是用來完成初始化工作的,但是靜態初始化器與構造方法有以下幾點根本不同。
a、構造方法是對每一個新創建的對象初始化,而靜態方法是對類自身進行初始化。
b、構造方法是在new運算符創建新對象的時候由系統執行,而靜態初始化器一般不能由程序調用,它是在所屬類被加載入內存時由系統調用執行的。
c、用new運算符創建多少個新的對象,構造方法就被調用那個多少次,但是靜態初始化器則是在被類加載入內存時只執行一次,與創建多少個對象無關。
2、如果有多個靜態初始化器,則它們在類的初始化時會依次執行。
3、類是在第一次被使用的時候才被裝載,而不是在程序啟動時就裝載程序中得所有可能用到的類。
4、靜態初始化器的作用是對整個類完成初始化操作,包括給static成員變量賦初值,它在系統向內存加載時自動完成。
5、例子
public class HelloB extends HelloA{ public HelloB() { } { System.out.print("I'm B class"); } static { System.out.print("Static B"); } public static void main(String[] args) { new HelloB(); } } class HelloA { /** * 構造方法,可以用來初始化該類的實例屬性,也可以初始化類對象 */ public HelloA() { } /** * 初始化塊,只能用於初始化該類的屬性 */ { System.out.print("I'm A class"); } /** * 靜態初始化器,對整個類就完成初始化操作,包括給成員變量賦值 */ static { System.out.print("Static A"); } }