1. 程式人生 > >實例塊與靜態塊

實例塊與靜態塊

實例塊 靜態塊

實例塊:

實例塊,可以寫任意個,new對象時,實例塊要比構造器先執行,不new對象實例塊不會執行。實例塊的寫法就是在類的括內寫一對{ },裏面除了方法以外,可以寫任意代碼,由於不像構造器能傳遞參數,所以基本日常開發中不會用到實例塊。例如:

技術分享

因為實例塊要比構造器先執行所以先輸出“實例塊”。


靜態塊:

靜態塊,可以寫任意個,類被加載的時候就被執行,但是只會被加載一次,不會加載第二次。一個類只要寫了靜態塊,而且有main方法靜態塊裏面有代碼的話裏面的代碼都會進行加載。例如:

技術分享


因為靜態塊是在類加載的時候就被加載,所以靜態塊裏面的代碼也會進行執行。




類什麽時候會被加載:

一個類在被new對象、被訪問調用方法、被訪問靜態成員均會促使這個類進行加載。還有就是用Class.forName();來加載類,這個方法是專門用來加載類的。例如:

技術分享


如果訪問類的常量是不會促使類進行加載的,因為常量層和類的內存不在一塊,所以類不會被加載。例如:

技術分享

技術分享

靜態塊沒被加載只調用了常量的值


本文出自 “12831981” 博客,請務必保留此出處http://12841981.blog.51cto.com/12831981/1974039

實例塊與靜態塊