驀然發現,腦子裡對關鍵字static是一灘漿糊,只知道是表示靜態,具體該用在什麼場合,用了有什麼好處和壞處等,說不清道不明。作為開發人員真汗顏啊。。。趕緊學習一下
static
修飾符可用於類、字段、方法、屬性、運算子、事件和建構函式,但不能用於索引器、析構函式或類以外的型別。
靜態類:
1.僅包含靜態成員
靜態類中的所有成員必須是靜態的,靜態類不能包含例項成員。
常數或者型別宣告隱式地是靜態成員,除此之外,靜態類成員都應該加static修飾符。
static
class companyemployee
public
static
void dosomethingelse()
}2.不能被例項化
不能使用new關鍵字建立靜態類的例項。
3.是密封的
不能繼承乙個靜態類。
4.不能包含例項建構函式
可以包含靜態建構函式。靜態建構函式可以用於靜態類,也可以用於非靜態類。靜態建構函式無訪問修飾符無引數,只有乙個static標誌。靜態建構函式不可被直接呼叫,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且只執行一次。
static
class cat
public
static
void howmanycats()
cats adopted
", statics);}}
public
class tester
}結果:
1 cats adopted
1 cats adopted
5. 靜態與非靜態的效能比較
靜態的從程式一啟動就會一直占用記憶體,而非靜態的只在例項化後才會占用記憶體,但是每例項化乙個物件時就會占用乙份記憶體。
6. 何時使用靜態類?
當類中沒有依賴物件標識的資料或行為時,就可以使用靜態類。當類中有依賴物件標識的資料或行為時,就不能使用靜態類。
經常呼叫的類,應該設計成靜態的。不經常呼叫的類,應該設計成非靜態的。
靜態成員
靜態成員通常用於表示不會隨物件狀態而變化的資料或計算,無論物件發生什麼更改,靜態成員都不會隨之變化。
不需要建立類的例項就可以呼叫該類中的靜態方法、字段、屬性或事件。
如果建立了類的例項,不能通過使用例項來訪問靜態成員。
靜態方法和屬性只能訪問靜態欄位和靜態事件。靜態方法呼叫非靜態的方法,必須先例項化乙個物件。
靜態類的乙個重要特點就是共享,所以通常使用靜態變數來儲存當前類的例項數目。
class cat
public
static
void howmanycats()
cats adopted
", statics);}}
public
class tester
}結果:
0 cats adopted
1 cats adopted
2 cats adopted
2 cats adopted
不可以使用this來引用靜態方法或屬性訪問器
若要訪問靜態成員,應該使用類名而不是變數名來指定該成員的位置
public
class automobile
}public
static
void drive()
public
static
event eventtype runoutofgas;
//other non-static fields and properties...
}訪問寫法:
automobile.drive();
int i = automobile.numberofwheels;
學習筆記 static的作用
1.static的作用 1 限制變數的作用域。2 設定變數的儲存域 在函式體,乙個被申明為靜態的變數在這乙個函式被呼叫的過程中維持值不變。void changeage 在模組內 但在函式體外 乙個被申明為靜態變數可以被模組內所有函式訪問,但不能被其他模組內的函式訪問 import person.h ...
Java學習筆記之static與this
package com.classtest import static package battery.直接匯入靜態類 呼叫靜態方法可以可以直接使用 不常用 1 靜態成員變數 屬於類的 屬於所有物件的全域性變數 2 靜態成員方法 屬於類的 屬於所有物件的全域性方法 3 靜態的只能呼叫靜態的 通過物件...
靜態static 筆記
1.類物件共享 2.類載入時產生,銷毀時釋放,生命週期長 靜態成員的訪問 1.物件.成員 2.類名.成員 static放於屬性名前稱作靜態屬性 類屬性 static放於方法名前稱作靜態方法 類方法 推薦呼叫方式 類名.靜態成員 在成員方法中,可以直接訪問類中的靜態成員 靜態方法中不能直接訪問同乙個類...