初始化塊問題
最后一行代碼是再次創(chuàng)建對(duì)象,能理解不再執(zhí)行靜態(tài)初始化塊,(即整個(gè)程序只執(zhí)行一次)也明白構(gòu)造方法會(huì)被再執(zhí)行一次,(及整個(gè)程序執(zhí)行兩次)但是為什么初始化塊也會(huì)再執(zhí)行一次(即為什么初始化塊整個(gè)會(huì)執(zhí)行兩次?)?初始化塊不在構(gòu)造方法里啊,為什么最后初始化塊會(huì)執(zhí)行兩次?
最后一行代碼是再次創(chuàng)建對(duì)象,能理解不再執(zhí)行靜態(tài)初始化塊,(即整個(gè)程序只執(zhí)行一次)也明白構(gòu)造方法會(huì)被再執(zhí)行一次,(及整個(gè)程序執(zhí)行兩次)但是為什么初始化塊也會(huì)再執(zhí)行一次(即為什么初始化塊整個(gè)會(huì)執(zhí)行兩次?)?初始化塊不在構(gòu)造方法里啊,為什么最后初始化塊會(huì)執(zhí)行兩次?
2018-12-31
舉報(bào)
2018-12-31
初始化塊作為每個(gè)對(duì)象的一部分,而不是類的一部分(除非是靜態(tài)代碼塊);
因此,每創(chuàng)建一個(gè)對(duì)象的時(shí)候,都會(huì)走一次初始化塊;
2019-01-21
每次創(chuàng)建對(duì)象Jvm都會(huì)編譯一次,而靜態(tài)代碼塊Jvm只會(huì)編譯一次,初始化代碼塊每次Jvm編譯都會(huì)執(zhí)行的。這個(gè)也解釋了為什么第二次創(chuàng)建對(duì)象初始化代碼塊會(huì)再次執(zhí)行哦,可以看下Jvm的運(yùn)行機(jī)制,加深理解