本人鏈結
public
class
a}
靜態方法:又稱做類方法,在類載入的時候就存在了,它不依賴於任何例項,可以通過類名來訪問。靜態方法必須有實現,不能是抽象方法,只能訪問所屬類的靜態成員和靜態方法,不能出現 this 和 super 關鍵字,因為該方法不依賴任何例項就可以訪問,而例項變數或者方法必須先建立例項才能訪問。
public
class
a}
靜態**塊:僅在類第一次被載入時執行一次的**塊,可用於對靜態變數初始化。
public
class
apublic
static
void
main
(string[
] args)
}//輸出:hello word!
靜態內部類:非靜態內部類必須依賴外部類的例項,而靜態類不需要,直接通過外部類名來建立。靜態內部類不能訪問外部類的非靜態的變數和方法。
public
class
apublic
static
class
staticinnerclass
public
static
void
main
(string[
] args)
}
靜態變數宣告和靜態語句塊優先於例項變數宣告和普通語句塊,靜態變數宣告和靜態語句塊的初始化順序取決於它們在**中的順序,最後才是建構函式的初始化。
存在繼承情況下的初始化順序,括號內容的執行順序取決於在**的順序:
順序規則:第一次載入類(還未建立物件)時,從最頂層父類開始執行靜態變數宣告、靜態語句塊(執行順序與**順序有關);當真正建立物件時,從最頂層父類開始執行例項變數宣告、普通語句塊和構造方法(前面兩個先執行,執行順序與**順序有關,構造方法最後執行),只有父類成員初始化完畢,才會初始化子類成員。
class
father
static
public
father()
}public
class
sonextends
father
static
public
son(
)public
static
void
main
(string[
] args)
}/*輸出:
father靜態**塊
son靜態**塊
father普通**塊
father構造方法
son普通**塊
som構造方法
*/
宣告資料為常量,可以是編譯時常量,也可以是在執行時被初始化後不能被改變的常量。
資料可分為成員變數和區域性變數,兩種都可以加 final。final
int x =1;
//x = 2; //報錯,基本型別不能更改
final a a =
newa()
;a.c =1;
//正常執行,引用變數不能更改引用物件,但可以更改物件資料
成員變數
final 修飾的成員變數必須顯示賦初始值。
不管是靜態變數還是例項變數,在分配記憶體時,會先分配預設值(0,\u0000,false 或 null)。當執行靜態**塊或者靜態變數宣告時可對靜態變數顯示賦初始值;當執行普通**塊、例項變數宣告或者構造器時可對例項變數顯示賦初始值。如果變數沒有顯式賦初始值,變數初始值使用預設值。而被 final 修飾的成員變數使用預設值將毫無意義,所有規定 final 修飾的成員變數必須顯示賦初始值。
區域性變數public
class
aprivate
static
int a =10;
private
static
final
int b =10;
private
final
int c;
//private final int d; //沒有賦初始值報錯
publica(
)public
static
void
main
(string[
] args)
}
public
void
test
(final
int a)
public
static
void
main
(string[
] args)
被 final 修飾的方法不能被子類重寫。private 方法被隱式地指定為 final,如果在子類中定義的方法和父類中的乙個 private 方法簽名相同,不是重寫父類方法,而是定義了乙個新的方法。
class
bprivate
voidf2(
)}public
class
aextends
bprivate
voidf2(
)}
被 final 修飾的類不能被繼承。
final
class
bpublic
class
aextends
b
static關鍵字和final關鍵字
static記住幾點 1.優先順序高,載入優先物件例項化 2.在記憶體中只分配一次 3.屬於類本身,所有例項共享,一處變,處處變 4.1 static不能訪問沒有static修飾的方法 因為不認識,物件例項後才能在外部使用方法 2 可以訪問static塊 3 未加static的方法可以訪問stati...
final關鍵字 和 static關鍵字
一.final關鍵字的作用 1.使用 final 方法的原因 第乙個原因是把方法鎖定,以防任何繼承類修改它的含義 第二個原因是final修飾的方法效率快。2.final final用於修飾類 成員變數和成員方法。final修飾類,類不能被繼承 final修飾成員方法,方法不能被重寫,但是子類可以用父...
static和final 關鍵字
static 關鍵字 可以用於修飾屬性,也可以用於修飾方法,還可以用於修飾 類 後面的課程講 static 修飾屬性 無論乙個類生成了多少個物件,所有這些物件共同使用唯 一乙份靜態的成員變數 乙個物件對該靜態成員變數進行了修改,其他物件 的該靜態成員變數的值也會隨之發生變化。如果乙個成員變數是 st...