static修飾成員變數

2021-08-31 13:44:24 字數 1517 閱讀 6396

/*

static(靜態): 修飾符

static修飾成員變數: 如果乙個資料需要被所有物件共享使用的時候,那麼即可使用static修飾該成員變數。

訪問方式:

方式1: 可以使用物件進行訪問。 格式:物件.靜態屬性名

方式2: 可以使用類名進行訪問。 格式: 類名.屬性名。

靜態成員變數要注意的細節:

1. 靜態的成員變數可以使用類名或者是物件進行訪問。

2. 非靜態的成員變數只能使用物件進行 訪問,不能使用類名直接訪問。

3. 千萬不要為了方便訪問而使用static修飾乙個成員變數,只有這個成員變數的資料是需要被共享的時候

才使用static修飾。

static修飾成員函式:

靜態函式的訪問方式:

方式一:使用物件訪問。 格式: 物件.函式名()

方式二:使用類名訪問。 格式: 類名.函式名();

靜態函式要注意的細節:

1. 非靜態的函式只能使用物件呼叫,不能使用類名呼叫。

2. 靜態函式可以直接訪問靜態的成員,但是不能直接訪問非靜態的成員。

原因:靜態函式可以使用類名呼叫,而這時候物件可能還沒有存在記憶體中,這時候非靜態的資料也就不存在記憶體中。

3. 非靜態函式可以直接訪問靜態以及非靜態的成員。

原因:非靜態函式必須要由物件呼叫,如果物件存在了,靜態資料以及非靜態資料早就存在記憶體中了。

4. 靜態函式不能出現this以及super關鍵字。

原因:因為靜態函式可以使用類名直接呼叫,而這時候可能還沒有物件存在,this又要代表當前物件。

什麼時候使用static修飾乙個函式呢?

如果乙個函式沒有直接訪問非靜態的成員,那麼即可使用static修飾該函式了。(常用於工具類的方法 arrays)

非靜態的成員變數與靜態成員變數的區別:

數量上的區別:

(n份)非靜態成員變數是在每個物件中都維護乙份資料

(1份)靜態成員變數只會在方法中維護乙份資料。

訪問方式上的區別:

非靜態的成員變數只能使用物件進行訪問.

靜態成員變數可以使用物件、類名進行訪問。

儲存位置上的區別;

非靜態成員變數是儲存在堆記憶體中。

靜態成員變數是儲存在方法區中。

生命週期的區別:

非靜態成員變數是隨著物件的建立而存在,隨著物件的消失而消失。

靜態成員變數是隨著類檔案的載入而存在,隨著類檔案(位元組碼檔案)的消失而消失。

作用上的區別:

非靜態成員變數的作用是用於描述一類事物的屬性。

靜態成員變數的作用是提供乙個共享資料給所有物件使用的。

*/class student

public student(string name)

//靜態函式

public static void sleep()

//非靜態函式

public void study()

}class demo10

}

static修飾變數

如果乙個變數變static修飾,會產生什麼樣的結果?1 static修飾區域性變數 例如 include void test int main return 0 執行結果為 當a被static修飾之後 include void test int main return 0 執行結果為 即static...

Static修飾成員方法

當使用了static修飾了成員變數或者成員方法,則需要用類名稱去呼叫。就算不建立物件也可以直接用類名稱 點的方式呼叫。注意 1.靜態方法不可以直接呼叫非靜態方法或者成員。因為在記憶體中,先生成的靜態方法及變數,後生成的成員變數及方法 2.靜態方法中不可以使用this關鍵字 因為this關鍵字代表的是...

static修飾成員變數的使用方法

package cn.dali.code02 自動生成學號 public class static01 public int getid public void setid int id public string getname public void setname string name pu...