????以上面這個(gè)例子來說,程序執(zhí)行main方法中第一句HelloWorld hello = new HelloWorld();的時(shí)候就會(huì)執(zhí)行初始化塊,而且只會(huì)執(zhí)行一次。程序后面又創(chuàng)建了一個(gè)對象hello2,這個(gè)時(shí)候初始化塊不執(zhí)行,構(gòu)造方法執(zhí)行。只要記住初始化塊是程序第一次調(diào)用類的時(shí)候執(zhí)行(且只執(zhí)行一次),而構(gòu)造方法是每創(chuàng)建一個(gè)對象都會(huì)執(zhí)行一次就行了。
2017-01-19
????初始化塊并不是創(chuàng)建對象時(shí)執(zhí)行的,而是第一次用到那個(gè)類的時(shí)候執(zhí)行的。
????以上面這個(gè)例子來說,程序執(zhí)行main方法中第一句HelloWorld hello = new HelloWorld();的時(shí)候就會(huì)執(zhí)行初始化塊,而且只會(huì)執(zhí)行一次。程序后面又創(chuàng)建了一個(gè)對象hello2,這個(gè)時(shí)候初始化塊不執(zhí)行,構(gòu)造方法執(zhí)行。只要記住初始化塊是程序第一次調(diào)用類的時(shí)候執(zhí)行(且只執(zhí)行一次),而構(gòu)造方法是每創(chuàng)建一個(gè)對象都會(huì)執(zhí)行一次就行了。
????另外,它們執(zhí)行的順序是:靜態(tài)初始化塊先執(zhí)行,然后非靜態(tài)初始化塊再執(zhí)行,最后構(gòu)造方法執(zhí)行。相同類型的初始化塊,按照定義時(shí)的順序執(zhí)行。