/*
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...