解釋:被static修飾的變量、被static修飾的方法統一屬於類的靜態資源,是類實例之間共享的spa
靜態方法繼承
一、靜態方法能不能引用非靜態資源?不能,new的時候纔會產生的東西,對於初始化後就存在的靜態資源來講,根本不認識它。資源
二、靜態方法裏面能不能引用靜態資源?能夠,由於都是類初始化的時候加載的,你們相互都認識。編譯
三、非靜態方法裏面能不能引用靜態資源?能夠,非靜態方法就是實例方法,那是new以後才產生的,那麼屬於類的內容它都認識。效率
解釋:靜態資源屬於類,可是是獨立於類存在的。從JVM的類加載機制的角度講,靜態資源是類初始化的時候加載的,而非靜態資源是類new的時候加載的。類的初始化早於類的new,好比Class.forName(「xxx」)方法,就是初始化了一個類,可是並無new它,只是加載這個類的靜態資源罷了。因此對於靜態資源來講,它是不可能知道一個類中有哪些非靜態資源的;可是對於非靜態資源來講就不同了,因爲它是new出來以後產生的,所以屬於類的這些東西它都能認識。變量
靜態塊引用
也是用於初始化一個類的時候作操做用的,和靜態變量、靜態方法同樣,靜態塊裏面的代碼只執行一次,且只在初始化類的時候執行。方法
1.靜態資源的加載順序是嚴格按照靜態資源的定義順序來加載的static
2.靜態代碼塊對於定義在它以後的靜態變量,能夠賦值,可是不能訪問co
3.靜態代碼塊是嚴格按照父類靜態代碼塊->子類靜態代碼塊的順序加載的,且只加載一次
final
一、被final修飾的類不能夠被繼承
二、被final修飾的方法不能夠被重寫
被final修飾的方法,JVM會嘗試爲之尋求內聯,這對於提高Java的效率是很是重要的。
三、被final修飾的變量不能夠被改變(被final修飾不可變的是變量的引用,而不是引用指向的內容,引用指向的內容是能夠改變的).
4被final修飾的常量,在編譯階段會存入調用類的常量池中