關鍵字static和this

2021-07-04 00:25:54 字數 1375 閱讀 4371

1、this關鍵字

this:代表當前物件,就是代表所在函式所屬類的引用。哪個物件呼叫了this所在的函式,this就代表哪個物件。

this關鍵字也可以用於在建構函式中呼叫其他建構函式,此時要注意,this();要定義在函式的第一行,因為初始化動作要先執行。

class person

person(string name)

person(string name,int age)

public void speak()

}

在person這個類的person(string name)這個建構函式中,用this關鍵字進行了初始化,this();這條語句先呼叫person();這個建構函式,執行完畢後再執行

this();後面的語句。

2、static關鍵字

(1) static關鍵字的特點:

① static 是乙個修飾符,用於修飾成員。

② static 所修飾的成員,被所有物件共享。

③ static 優先於物件存在,被static所修飾的成員隨著類的載入就存在了。

④ static 所修飾的成員多了一種呼叫方式,不需要建立物件,可以直接用類名呼叫。類名.靜態成員

⑤ static 所修飾的成員是共享資料,稱作靜態變數,物件中儲存的是特有資料,稱作成員變數。

(2) 靜態變數和成員變數的區別

①生命週期不同,成員變數隨著物件的建立而存在,隨著物件的消失而消失。而靜態變數隨著類的載入而存在,優先於物件存在,隨著類的消失而消失。

②呼叫方式不同,成員變數只能被物件呼叫,靜態變數還能夠被類名所呼叫。

③別名不同,靜態變數又叫類變數,成員變數又叫例項變數。

④資料儲存位置不同,靜態變數儲存在記憶體的方法區(也叫共享資料區)的靜態區內,成員變數儲存在堆記憶體的物件中。

(3) 靜態使用注意事項

①靜態方法只能訪問靜態成員,非靜態方法既可以訪問靜態成員也可以訪問非靜態成員。

②靜態方法中不能使用this和super關鍵字。

③主函式是靜態的。

(4) 靜態什麼時候用?

①靜態變數,分析物件,當多個物件中均儲存這個變數,而且該變數無需改動,這時該變數可以被static所修飾。只要儲存的資料值是不同的,就必須儲存在物件中,是特有變數。如果儲存的資料是相同的,則物件無需修改,直接使用即可,為靜態變數。

②靜態函式,函式是否用靜態來修飾,只需參考一點,該函式是否訪問了類中的特有變數,若訪問了特有變數則函式是非靜態的,若函式中只訪問靜態變數,該函式可以被靜態修飾,也可不用靜態修飾。但是若不用靜態修飾,在呼叫時需要先建立物件,此物件的建立時無意義的。

(5) 靜態**塊

被static所修飾的**塊稱為靜態**塊,隨著類的載入而執行,只執行一次,可用於給類進行初始化。

static關鍵字和final關鍵字

static記住幾點 1.優先順序高,載入優先物件例項化 2.在記憶體中只分配一次 3.屬於類本身,所有例項共享,一處變,處處變 4.1 static不能訪問沒有static修飾的方法 因為不認識,物件例項後才能在外部使用方法 2 可以訪問static塊 3 未加static的方法可以訪問stati...

final關鍵字 和 static關鍵字

一.final關鍵字的作用 1.使用 final 方法的原因 第乙個原因是把方法鎖定,以防任何繼承類修改它的含義 第二個原因是final修飾的方法效率快。2.final final用於修飾類 成員變數和成員方法。final修飾類,類不能被繼承 final修飾成員方法,方法不能被重寫,但是子類可以用父...

this關鍵字 static關鍵字

1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...