Java中的靜態(tài)代碼塊是如何執(zhí)行的?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
一般情況下,如果有些代碼必須在項(xiàng)目啟動的時(shí)候就執(zhí)行的時(shí)候,需要使用靜態(tài)代碼塊,這種代碼是主動執(zhí)行的;需要在項(xiàng)目啟動的時(shí)候就初始化,在不創(chuàng)建對象的情況下,其他程序來調(diào)用的時(shí)候,需要使用靜態(tài)方法,這種代碼是被動執(zhí)行的, 靜態(tài)方法在類加載的時(shí)候就已經(jīng)加載,可以用類名直接調(diào)用。
比如main方法就必須是靜態(tài)的,這是程序入口
兩者的區(qū)別就是:
問題及總結(jié)
關(guān)于靜態(tài)代碼塊其實(shí)是面試時(shí)老生常談的問題,雖然面試時(shí)問了我也大概知道,但是在用的時(shí)候還是踩了個(gè)小坑。我想通過調(diào)用類的靜態(tài)變量來觸發(fā)靜態(tài)代碼塊的調(diào)用,但是沒有成功。
總結(jié)下靜態(tài)代碼塊能執(zhí)行的條件:
第一次初始化對象
第一次調(diào)用靜態(tài)方法
第一次調(diào)用靜態(tài)代碼塊下面的靜態(tài)變量
public class ConfigHandler { public static p1 = “p1”; static{ System.out.println("this is a static code block"); } public static p2 = “p2”; public static p3 ; public static init(){} }