1. 程式人生 > >this關鍵字與static關鍵字

this關鍵字與static關鍵字

this關鍵字和static關鍵字

this關鍵字:

this:看上去,是用於區分區域性變數和成員變數同名的情況

this為什麼能解決這個問題?

this到底代表什麼呢?

this:就代表本類的物件,到底代表哪一個呢?

this代表 它所在函式所屬物件的引用

簡單說:哪個物件在呼叫this所在的函式,this就代表哪個物件

this的應用:當定義類中方法時,該方法內部要用到呼叫該方法的物件時,這時用this來表示這個物件。但凡本類方法內部使用到了本類物件,都用this表示

this語句,用於建構函式之間互相呼叫

this語句只能定義在建構函式的第一行,因為初始化動作要先執行。

static關鍵字:

靜態:static

用法:是一個修飾符,用於修飾成員(成員變數,成員函式)

當成員被靜態修飾後,就多了一種呼叫方式,除了可以被物件呼叫外,還可以直接被類名呼叫。類名.靜態成員

static特點:

1. 隨著類的載入而載入。也就是說靜態會隨著類的消失而消失,說明它的生命週期最長

2. 優先於物件存在。

明確一點:靜態是先存在,物件是後存在

3. 被所有物件所共享

4. 可以直接被類名所呼叫

例項變數和類變數的區別:

1. 存放位置:

類變數隨著類的載入而存在與方法區中。

例項變數隨著物件的建立而存在於堆記憶體中。

2. 生命週期:

類變數生命週期最長,隨著類的消失而消失

例項變數生命週期隨著物件的消失而消失

靜態使用注意事項:

1. 靜態方法只能訪問靜態成員 

非靜態方法既可以訪問靜態也可以訪問非靜態

2. 靜態方法中不可以定義this,super關鍵字。

因為靜態優先於物件存在,所以靜態方法中不可以出現this

3. 主函式是靜態的

靜態有利有弊

利:對物件的共享資料進行單獨空間的儲存,節省空間。沒有必要每個物件中都儲存一份

可以直接被類名呼叫。

弊:生命週期過長。訪問出現侷限性(靜態雖好,卻只能訪問靜態)

什麼時候使用靜態?

要從兩個方面下手:

因為靜態修飾的內容有成員變數和成員方法

什麼時候定義靜態變數(類變數)呢?

當物件中出現共享資料時,該資料被靜態所修飾,物件中的特有資料要定義成非靜態存在於堆記憶體中

什麼時候定義靜態方法呢

當功能內部沒有訪問到非靜態資料(物件的特有資料),那麼該功能可以定義成靜態的。

靜態的應用:

每一個應用程式中都有共性的功能,可以將這些功能進行抽取,獨立封裝。以便複用

靜態程式碼快:

格式:static{

靜態程式碼塊中的執行語句

}

特點:隨著類的載入而執行,只執行一次,並優先於主函式。用於給類進行初始化