靜態成員歸整個類所有,不依賴類特定的例項,是被類的所有例項共享。只要這個類被jvm載入,就可以根據類名在全域性資料區域內找到它們。因此,靜態成員可以在任何物件建立之前訪問而無需訪問物件。
static關鍵字修飾的成員變數稱為靜態成員變數,簡稱靜態變數。靜態變數是屬於類,但是不依賴類特定的例項。靜態變數在類建立後就一直存在,其生命週期和所在類的生命週期是一樣的,且被類的所有例項共享。若乙個類有多個例項物件,那麼這些例項物件都可以共享該靜態變數。也可以在沒有建立例項物件時,通過類名來訪問該類的靜態變數。
例項變數和靜態變數有如下幾點區別。
1,對於例項變數,每建立乙個例項,jvm就會為例項變數分配一次記憶體,例項變數可以在記憶體中有多個備份,互相不影響,例項變數隸屬於物件。在類內部,非靜態方法可以直接訪問例項變數。本類中的靜態方法或其他類則需要通過本類的例項物件訪問例項變數。
2,對於靜態變數,載入類的過程中完成靜態變數的記憶體分配,jvm只為靜態變數分配一次記憶體,而且靜態變數在記憶體中只有乙個備份。靜態變數可以被所有物件之間共享。在本類中,任何方法都可以直接訪問靜態變數,當然也可以通過物件來訪問(一般不這樣)。在其他類中,則需要通過類名來訪問靜態變數
通過下面的例程能更加直觀的了解靜態變數:
public
static
void
main(string args)
}class statictest01
public
intgetcit()
public
static
void
lefttask()
靜態變數有以下幾個作用:(1)靜態變數被所有的例項共享,因此可以作為例項之間的共享資料,增加例項之間的互動性。(2)靜態變數可以讓類中的所有例項包含同乙個常量屬性。
靜態方法與靜態變數一樣屬於類,靜態方法在類建立後就一直存在,其生命週期和所在類的生命週期是一樣的,也可以在沒有建立例項物件時,通過類名來訪問該類的靜態方法。
靜態方法不能訪問非靜態的例項變數和例項方法。
例項方法和靜態方法的區別如下:
1,靜態方法可以不通過本類的例項物件而通過「類名.靜態方法名」就可以呼叫。靜態方法不能訪問本類的例項變數和例項方法,但是可以訪問靜態成員。靜態方法中不能使用this關鍵字和super關鍵字,因為這兩個關鍵字和特定的例項變數相關。
2,例項方法可以訪問靜態成員,包括靜態變數、靜態常量、靜態方法、例項變數和例項方法。但是靜態方法不能直接訪問例項變數和呼叫例項方法。
Java中的靜態修飾符 static
靜態修飾符的特點 static是乙個修飾符,用於修飾成員 成員變數和成員函式 靜態成員隨著類的載入而載入。靜態成員優先於物件存在。靜態成員被所有物件所共享 靜態成員多了乙個中呼叫方式,可以被類名直接呼叫。靜態使用的注意事項。靜態方法只能訪問靜態成員,非靜態方法既可以訪問靜態又可以訪問非靜態。靜態方法...
C 之static靜態修飾符詳解
所以靜態成員資料也稱為類資料,靜態成員函式也稱為類方法。靜態成員資料在類裡只是乙個說明,還需要乙個定義 或叫初始化 靜態成員資料要在類定義之外被初始化 要用類名限定修飾 而且程式裡只能提供一次,所以初始化不能放在標頭檔案裡。例1 class test error int test k is a st...
static關鍵字(靜態修飾符)
1 static是乙個修飾符,用於修飾成員 2 static修飾的成員被所有的物件所共享 3 static優先於物件存在,因為static的成員隨著類的載入就已經存在了 4 static修飾的成員多了一種呼叫方式,即可以直接被類名呼叫。類名.靜態變數 5 static修飾的資料是共享資料,物件中的儲...