static關鍵字與final

  解釋:被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修飾的常量,在編譯階段會存入調用類的常量池中

相關文章
相關標籤/搜索