(一)java 靜態代碼塊與靜態方法區別
一般情況下,如果有些代碼必須在項目啟動的時候就執行的時候,需要使用靜態代碼塊,這種代碼是主動執行的;需要在項目啟動的時候就初始化,在不創建對象的情況下,其他程序來調用的時候,需要使用靜態方法,這種代碼是被動執行的. 靜態方法在類加載的時候 就已經加載 可以用類名直接調用
兩者的區別就是:靜態代碼塊是自動執行的,而靜態方法是被調用的時候才執行
靜態方法
(1)在Java里,可以定義一個不需要創建對象的方法,這種方法就是靜態方法。要實現這樣的效果,只需要在類中定義的方法前加上static關鍵字。例如:
public static int maximum(int n1,int n2)
使用類的靜態方法時,注意:
a在靜態方法里只能直接調用同類中其他的靜態成員(包括變量和方法),而不能直接訪問類中的非靜態成員。這是因為,對於非靜態的方法和變量,需要先創建類的實例對象后才可使用,而靜態方法在使用前不用創建任何對象。
b 靜態方法不能以任何方式引用this和super關鍵字,因為靜態方法在使用前不用創建任何實例對象,當靜態方法調用時,this所引用的對象根本沒有產生。
(2)靜態變量是屬於整個類的變量而不是屬於某個對象的。注意不能把任何方法體內的變量聲明為靜態,例如:
fun()
{
static int i=0;//非法。
}
(3)一個類可以使用不包含在任何方法體中的靜態代碼塊,當類被載入時,靜態代碼塊被執行,且只被執行一次,靜態塊常用來執行類屬性的初始化。例如:
static
{
}