static關鍵字的作用主要作用有兩個,如下:
1.爲特定類型的數據或對象分配單一的存儲空間,與對象的個數無關,可以在單例模式得以提現;
2.實現變量或方法,而不需要對象的創建就能夠實現。
(1)static成員變量:
成員變量有static靜態變量與非靜態變量,其中靜態變量是屬於類的,而非靜態變量是屬於方法的。靜態變量可以通過
類名.變量名或者對象名.變量名來調用,且只要靜態變量所在的類被調用,那麼這個靜態變量就會被調用。
(2)static靜態方法:
靜態方法是類的方法,不同於非靜態方法,靜態方法可以在不用創建對象的情況下就進行調用。在靜態方法中不能使用this
和super關鍵字,因爲this關鍵字是對調用此方法的對象的引用,即是作用在對象層面的,而靜態方法又是可以由類直接調
用的,有可能就是當靜態方法調用後對象可能還沒有創建。super關鍵字同樣是對父類對象的引用,同時很重要的就是靜態 是優先於對象存在的,故在靜態方法中是不能使用this和super關鍵字的。
(3)靜態代碼塊:
靜態代碼塊是用來初始化的,在類被調用時,jvm就會進行執行靜態代碼塊中的內容,如果有多個靜態代碼塊,jvm會按照
順序類執行,且靜態代碼塊只會執行一次。
附單例模式方法:
package danli;
public class DemoDanli {
private static DemoDanli danli = null;
private DemoDanli() { // 單例模式不能多次創建對象,只能給出一個創建對象的方法,同時私有化構造方法
}
public static DemoDanli getDemoDanli() { // 在沒有創建對象的 時候才能創建對象
if (danli == null) {
danli = new DemoDanli();
}
return danli;
}
}