好程式設計師Java教程分享Java中this的幾種用法
好程式設計師Java 教程分享 Java 中this 的幾種用法,this 關鍵字必須放在非靜態方法裡面
this 關鍵字代表自身,在程式中主要的使用用途有以下幾個方面:
? 使用 this 關鍵字引用成員變數
? 使用 this 關鍵字在自身構造方法內部引用其它構造方法
? 使用 this 關鍵字代表自身類的物件
? 使用 this 關鍵字引用成員方法
引用成員變數
在一個類的方法或構造方法內部,可以使用“ this. 成員變數名”這樣的格式來引用成員變數名,有些時候可以省略,有些時候不能省略。首先看一下下面的程式碼:
/**
* 使用 this 引用成員變數
*/
publicclassReferenceVariable{
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 關鍵字引用構造方法
*/
publicclassReferenceConstructor{
inta;
publicReferenceConstructor(){
this(0);
}
publicReferenceConstructor(inta){
this.a=a;
}
}
這裡在不帶引數的構造方法內部,使用this 呼叫了另外一個構造方法,其中 0 是根據需要傳遞的引數的值,當一個類內部的構造方法比較多時,可以只書寫一個構造方法的內部功能程式碼,然後其它的構造方法都透過呼叫該構造方法實現,這樣既保證了所有的構造是統一的,也降低了程式碼的重複。
在實際使用時,需要注意的是,在構造方法內部使用this 關鍵字呼叫其它的構造方法時,呼叫的程式碼只能出現在構造方法內部的第一行可執行程式碼。這樣,在構造方法內部使用 this 關鍵字呼叫構造方法最多會出現一次。
代表自身物件
在一個類的內部,也可以使用this 代表自身類的物件,或者換句話說,每個類內部都有一個隱含的成員變數,該成員變數的型別是該類的型別,該成員變數的名稱是 this ,實際使用 this 代表自身類的物件的示例程式碼如下:
/**
* 使用 this 代表自身類的物件
*/
publicclassReferenceObject{
ReferenceObjectinstance;
publicReferenceObject(){
instance=this;
}
publicvoidtest(){
System.out.println(this);
}
}
在構造方法內部,將物件this 的值賦值給 instance ,在 test 方法內部,輸出物件 this 的內容,這裡的 this 都代表自身型別的物件。
引用成員方法
在一個類的內部,成員方法之間的互相呼叫時也可以使用“ this. 方法名 ( 引數 ) ”來進行引用,只是所有這樣的引用中 this 都可以省略,這裡就不詳細介紹了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2660519/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java教程分享幾個流行的Java框架程式設計師Java框架
- 好程式設計師Java教程分享Java的兩種跳轉語句程式設計師Java
- 好程式設計師Java教程分享Java語法程式設計師Java
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 好程式設計師Java培訓分享BigDecimal的用法程式設計師JavaDecimal
- 好程式設計師Java教程分享Java面試妙招程式設計師Java面試
- 好程式設計師Java教程分享Java開發工具程式設計師Java
- 好程式設計師Java教程分享List介面程式設計師Java
- 好程式設計師Java教程分享javaweb框架程式設計師JavaWeb框架
- 好程式設計師Java教程分享Java開發主流框架程式設計師Java框架
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 好程式設計師Java教程分享Java中經常出現的問題程式設計師Java
- 好程式設計師Java教程分享Java的4大核心基礎程式設計師Java
- 好程式設計師Java教程分享Java的五大特點程式設計師Java
- 好程式設計師Java教程分享如何系統的學習Java程式設計師Java
- 好程式設計師Java教程分享Java面試題之Hibernate程式設計師Java面試題
- 好程式設計師Java教程分享Java中String型別的10個問題程式設計師Java型別
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 好程式設計師Java教程分享:Java工程師常見面試題程式設計師Java工程師面試題
- 好程式設計師Java教程分享Jmeter效能測試程式設計師JavaJMeter
- 好程式設計師Java教程分享MyBatis Plus介紹程式設計師JavaMyBatis
- 好程式設計師Java培訓分享Java集合的兩種排序方法程式設計師Java排序
- 好程式設計師Java教程分享Java物件導向與程式導向程式設計師Java物件
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java教程分享Java難點解析之泛型程式設計師Java泛型
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師Java教程分享Vue外掛之Axios程式設計師JavaVueiOS
- 好程式設計師Java教程分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java教程分享面試中Spring的技術問題程式設計師Java面試Spring
- 好程式設計師Java教程分享Java技術知識點總結程式設計師Java
- 好程式設計師Java教程分享Java之包裝類與常用類程式設計師Java
- 好程式設計師Java教程分享Java實習生面試題集錦程式設計師Java面試題
- 好程式設計師Java教程分享經典Java main方法面試題程式設計師JavaAI面試題
- 好程式設計師Java培訓分享Java程式設計師常用的工具類庫程式設計師Java
- 好程式設計師Java教程分享XML常見面試題程式設計師JavaXML面試題
- 好程式設計師Java教程分享Nginx靜態資源部署程式設計師JavaNginx
- 好程式設計師Java教程分享jsp相關面試題程式設計師JavaJS面試題
- 好程式設計師Java教程分享meta標籤什麼作用程式設計師Java