好程序員Java教程分享Java中this的幾種用法,this關鍵字必須放在非靜態方法里面
創新互聯建站長期為千余家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為福清企業提供專業的成都做網站、網站制作,福清網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。
?
this關鍵字代表自身,在程序中主要的使用用途有以下幾個方面:
?
?使用this關鍵字引用成員變量
?
?使用this關鍵字在自身構造方法內部引用其它構造方法
?
?使用this關鍵字代表自身類的對象
?
?使用this關鍵字引用成員方法
?
引用成員變量
?
在一個類的方法或構造方法內部,可以使用“this.成員變量名”這樣的格式來引用成員變量名,有些時候可以省略,有些時候不能省略。首先看一下下面的代碼:
?
/**
?
*使用this引用成員變量
?
*/
?
publiccla***eferenceVariable{
?
privateinta;
?
publicReferenceVariable(inta){
?
this.a=a;
?
}
?
publicintgetA(){
?
returna;
?
}
?
publicvoidsetA(inta){
?
this.a=a;
?
}
?
}
?
在該代碼的構造方法和setA方法內部,都是用this.a引用類的成員變量。因為無論在構造方法還是setA方法內部,都包含2個變量名為a的變量,一個是參數a,另外一個是成員變量a。按照Java語言的變量作用范圍規定,參數a的作用范圍為構造方法或方法內部,成員變量a的作用范圍是類的內部,這樣在構造方法和setA方法內部就存在了變量a的沖突,Java語言規定當變量作用范圍重疊時,作用域小的變量覆蓋作用域大的變量。所以在構造方法和setA方法內部,參數a起作用。
?
這樣需要訪問成員變量a則必須使用this進行引用。當然,如果變量名不發生重疊,則this可以省略。
?
但是為了增強代碼的可讀性,一般將參數的名稱和成員變量的名稱保持一致,所以this的使用頻率在規范的代碼內部應該很多。
?
引用構造方法
?
在一個類的構造方法內部,也可以使用this關鍵字引用其它的構造方法,這樣可以降低代碼的重復,也可以使所有的構造方法保持統一,這樣方便以后的代碼修改和維護,也方便代碼的閱讀。
?
下面是一個簡單的示例:
?
/**
?
*使用this關鍵字引用構造方法
?
*/
?
publiccla***eferenceConstructor{
?
inta;
?
publicReferenceConstructor(){
?
this(0);
?
}
?
publicReferenceConstructor(inta){
?
this.a=a;
?
}
?
}
?
這里在不帶參數的構造方法內部,使用this調用了另外一個構造方法,其中0是根據需要傳遞的參數的值,當一個類內部的構造方法比較多時,可以只書寫一個構造方法的內部功能代碼,然后其它的構造方法都通過調用該構造方法實現,這樣既保證了所有的構造是統一的,也降低了代碼的重復。
?
在實際使用時,需要注意的是,在構造方法內部使用this關鍵字調用其它的構造方法時,調用的代碼只能出現在構造方法內部的第一行可執行代碼。這樣,在構造方法內部使用this關鍵字調用構造方法最多會出現一次。
?
代表自身對象
?
在一個類的內部,也可以使用this代表自身類的對象,或者換句話說,每個類內部都有一個隱含的成員變量,該成員變量的類型是該類的類型,該成員變量的名稱是this,實際使用this代表自身類的對象的示例代碼如下:
?
/**
?
*使用this代表自身類的對象
?
*/
?
publiccla***eferenceObject{
?
ReferenceObjectinstance;
?
publicReferenceObject(){
?
instance=this;
?
}
?
publicvoidtest(){
?
System.out.println(this);
?
}
?
}
?
在構造方法內部,將對象this的值賦值給instance,在test方法內部,輸出對象this的內容,這里的this都代表自身類型的對象。
?
引用成員方法
?
在一個類的內部,成員方法之間的互相調用時也可以使用“this.方法名(參數)”來進行引用,只是所有這樣的引用中this都可以省略,這里就不詳細介紹了。
?
本文題目:好程序員Java教程分享Java中this的幾種用法
文章網址:http://m.newbst.com/article6/jiciig.html
成都網站建設公司_創新互聯,為您提供小程序開發、微信小程序、品牌網站設計、面包屑導航、軟件開發、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯