Final和Static及程式執行順序
final可以用來修飾:類、屬性和方法
用於修飾類:表示該類不可以被繼承
用於修飾屬性:表示該屬性不可以被修改
用於修飾方法:表示該方法不可以被重寫
但是,final不可以用於修飾介面和抽象類
static
static可以用作修飾:類、屬性、方法、程式碼塊
用於修飾類:普通類不允許宣告為靜態的,只有內部類才可以。被static修飾的內部類可以直接作為
一個普通類來使用。而不需要例項一個外部類
用於修飾屬性:表示該屬性為類屬性,表示該類的物件共享的一個屬性(共享一塊記憶體空間)
類屬性儘量用類名直接呼叫
用於修飾方法:靜態方法可以直接用類名呼叫,但是靜態方法裡只能呼叫靜態的屬性
所以在靜態方法裡不可以用到super和this。
用於修飾程式碼塊:是在類中獨立於類成員的static語句塊,可以有多個,位置可以隨便放,它
不在任何方法體內,JVM載入類時會執行這些靜態的程式碼塊,如果static程式碼塊有多個
,JVM將按照他們在類中出現的順序先後以及執行
關於Java程式的裝載過程
虛擬機器{
JRE =JVM+JavaAPI
}
第一步:啟動JVM
第二部:將用到的.class檔案(Java可執行檔案—)裝載到Java虛擬機器內
在裝載的過程中靜態的屬性和靜態的程式碼塊會依次執行,static方法會在被呼叫時執行
第三步:JVM開始呼叫主函式
當建立一個類的物件的時候,首先執行非靜態的程式碼塊和非靜態的屬性,依次執行
非靜態的方法會被載入到方法區
然後執行構造方法
Java程式載入順序:static屬性/static程式碼塊(從上至下按順序執行)--》主函式--》成員屬性/非靜態程式碼塊--》
構造方法