一、JAVA中final 與static 總結 |
||
|
||
|
final |
static |
修飾類 |
該類不可被繼承 |
隻能修飾內部類,該類不需要new,是靜態加載(嵌套頂層類) |
修飾接口 |
× |
× |
修飾構造函數 |
× |
× |
修飾語句塊 |
× |
虛擬機按聲明順序初始化static成員字段和static語句塊 |
修飾字段屬性 |
表示屬性初始化後不能修改(實例常量) |
是類變量,所有實例共享該變量值(類變量) |
在定義時或構造函數中賦值(每個實例擁有一份拷貝) |
||
修飾方法 |
該方法不能被覆蓋(隻可繼承) |
是類方法,所有實例共享該方法(類方法) |
修飾函數參數 |
參數值不能被函數修改 |
× |
修飾函數局部變量 |
局部變量初始化後不能修改(局部常量) |
× |
|
|
|
用途 |
1).為瞭防止方法被覆蓋或改寫; |
1).定義全局變量或常量; |
2).提高運行效率,JAVA對final方法調用采用內嵌機制; |
2).定義類方法; |
|
|
|
|
二、JAVA類加載順序 |
||
JAVA類加載順序: |
1).按代碼順序遞歸加載靜態成員/代碼塊,先父類再本類; |
|
|
2).按代碼順序遞歸加載非靜態成員/代碼塊,先父類再本類; |
|
|
3).按代碼順序遞歸調用構造函數,先父類再本類; |
|
|
|
|
JAVA類加時機: |
1).調用靜態成員時,加載靜態成員所在的類及父類; |
|
|
2).第一次new對象時加載(第二次new不再加載) |
|
|
3).加載子類會先加載父類.有static和final修飾的成員不會被加載;當成常量使用; |
本文出自 “坐看雲起時” 博客