static靜態: 常見修飾的內容: 1.變數: 修飾變數時,叫靜態變數或類變數。此變數為類所有隨著虛擬機載入類是而載入入方法區,此靜態變數為該類所有對象共用,在記憶體中只有一個副本,它 當且僅當 類的初次載入時會被初始化。非靜態的變數是對象“私有”的,在每次創建對象時被初始化,存在多個副本,各個副本 ...
static靜態:
常見修飾的內容:
1.變數:
修飾變數時,叫靜態變數或類變數。此變數為類所有隨著虛擬機載入類是而載入入方法區,此靜態變數為該類所有對象共用,在記憶體中只有一個副本,它 當且僅當 類的初次載入時會被初始化。非靜態的變數是對象“私有”的,在每次創建對象時被初始化,存在多個副本,各個副本互不影響。而靜態變數是對象共用的,若一個對象改變了其值,其他對象也會受影響。調用:其它類調用它時可以用類名直接調用該屬性,也可以用該類對象調用。 靜態 不能修飾局部變數!
2.方法:
修飾方法時,叫靜態方法或類方法。類方法如其名,也是通過類名直接調用或者對象調用,但由於它不依賴於對象就可以訪問,因此對於靜態方法來說就沒有this.的。由於這個特性,靜態方法中就不止直接訪問非靜態成員方法和非靜態成員變數,因為非靜態是屬於對象的,靜態屬於類的,可以這麼理解。
註意:非靜態的方法是可以訪問靜態方法和變數的。
3.類:
修飾類時,此類只能是內部類。靜態內部類不需要有指向外部類的引用而非靜態內部類需要持有對外部類的引用。非靜態內部類能夠訪問外部類的靜態和非靜態成員,靜態內部類不能訪問外部類的非靜態成員,它只能訪問外部類的靜態成員(類似於靜態方法)。非靜態內部類不能脫離外部類實體被創建,非靜態內部類可以訪問外部類的數據和方法,因為他就在外部類裡面。
4.對象:
修飾對象時:此對象在編譯前就存在於記憶體中,所以不用new去創建了,可以直接用類名去調用。
5.代碼塊:
修飾代碼時,此時該代碼塊和靜態變數屬於一個載入的優先順序。靜態變數丶靜態代碼塊都是隨著類的載入而載入,優先於構造方法丶構造代碼塊。靜態變數丶靜態代碼塊同時存在時,誰編寫在上面誰先載入,遵循順序結構。靜態代碼塊中不能有任何方法體的存在,而且它不能直接訪問靜態實例和實例方法,需要通過類的實例對象進行訪問。