Java之路 this關鍵字的用法

2021-09-03 02:03:40 字數 1992 閱讀 8589

(1)this代表當前物件的乙個引用。所謂當前物件,指的是呼叫類中方法或屬性的那個物件。

最經常使用this關鍵字的情況,是在物件的乙個屬性被方法或構造器的引數遮蔽時,需要呼叫這個被遮蔽的屬性,如下:

class

person

}

(2)this只能在方法內部使用,表示對「呼叫方法的那個物件」的引用。但要注意,如果在方法內部呼叫同乙個類的另乙個方法,就不必使用this,直接呼叫即可。當前方法中的this引用會自動應用於同一類中的其他方法。

如下:

public

class

apricot

void

pit(

)}

在pit()內部,你可以寫this.pick(),但無此必要。編譯器能幫你自動新增。只有當需要明確指出對當前物件的引用時,才需要使用this關鍵字。

注:有些人執意將this放在每乙個方法呼叫和字段引用前,認為這樣「更清楚更明確」。但是造成別這樣做。我們使用高階語言的原因之一就是它們能幫我們做一些事情。要是你把this放在一些沒必要的地方,就會使讀你程式的人不知所措,因為別人寫的**不會到處用到this。人們期望只在必要處使用this。遵循一種一致而直觀的程式設計風格能節省時間和金錢。

(3)this不能用於靜態方法。main方法也是靜態的,所以this也不能用於main方法。

static方法是類方法,先於任何的例項(物件)存在。即static方法在類載入時就已經存在了,但是物件是在建立時才在記憶體中生成,而this指代的是當前的物件。

在方法中定義使用的this關鍵字,它的值是當前物件的引用。也就是說你只能用它來呼叫屬於當前物件的方法或者使用this處理方法中成員變數和區域性變數重名的情況.。

而且,更為重要的是this和super都無法出現在static 修飾的方法中,static 修飾的方法是屬於類的,該方法的呼叫者可能是乙個類,而不是物件。如果使用的是類來呼叫而不是物件,則this就無法指向合適的物件。所以static 修飾的方法中不能使用this。

(4)可以使用this關鍵字呼叫過載構造方法。避免相同的初始化**,只能在構造方法中用,並且必須位於構造方法的第一句。並且,除了構造器之外,編譯器禁止在其他任何方法中呼叫構造器。

package this_constructor;

class

person

public

person

(string name,

int age)

}public

class

thisconstructor

}}

【結果】

再看下例:

public

class

rectangle

public

rectangle

(int width,

int height)

public

rectangle

(int x,

int y,

int width,

int height)..

.}

有的讀者經常會有這樣的疑問,如果我把this()呼叫無參構造方法的位置任意調換,那不就可以在任何時候都可以呼叫構造方法了麼?實際上這樣理解是錯誤的。構造方法是在例項化乙個物件時被自動呼叫的,也就是說在類中的所有方法裡,只有構造方法是被優先呼叫的,所以使用this呼叫構造方法必須也只能放在類中。

static關鍵字 java關鍵字

先按照宣告順序初始化基類靜態變數和靜態 塊,接著按照宣告順序初始化子類靜態變數和靜態 塊,而後按照宣告順序初始化基類普通變數和普通 塊,然後執行基類建構函式,接著按照宣告順序初始化子類普通變數和普通 塊,最後執行子類建構函式。import static com.test.test1.fu.say i...

Java的關鍵字

一 原始資料型別 byte short int long float double char boolean 二 迴圈關鍵字 do while for break continue 三 分支關鍵字 if else switch case default break 四 方法,變數和類修飾符 priv...

Java的this關鍵字

this表示呼叫方法的當前物件。this的用法 1 如果在類的方法中呼叫同乙個類的成員變數或成員方法時,不必使用this,直接使用就可以。如果方法的引數或區域性變數與成員變數同名,即產生歧義,這種情況下必須使用this。2 如果乙個類中定義了多個建構函式,為了避免重複 可以在乙個建構函式裡呼叫另乙個...