this 關鍵字只能在方法內部使用,表示對“調用方法的那個對象”的引用。
其實簡單來說 this 關鍵字就是表示當前對象,下面我們來具體介紹 this 關鍵字在Java中的用法。
1、調用成員變量
在一個類的方法內部,如果我們想調用其成員變量,不用 this,我們會怎么做?
package com.ys.test;
/**
* Create by YSOcean
*/
public class ThisTest {
private String name = "Tom";
public void setName(String name){
name = name;
}
public String getName() {
return name;
}
}
看上面的代碼,我們在 ThisTest 類中創建了一個 name 屬性,然后創建了一個 setName 方法,注意這個方法的形參也是 String name,那么我們通過 name = name 這樣賦值,會改變成員變量 name 的屬性嗎?
public static void main(String[] args) {
ThisTest tt = new ThisTest();
tt.setName("Marry");
System.out.println(tt.getName());//Tom
}
打印結果是 Tom,而不是我們重新設置的 Marry,顯然這種方式是不能在方法內部調用到成員變量的。因為形參的名字和成員變量的名字相同,setName 方法內部的 name = name,根據最近原則,編譯器默認是將這兩個 name 屬性都解析為形參 name,從而導致我們設值操作和成員變量 name 完全沒有關系,當然設置不了。
解決辦法就是使用 this 關鍵字。我們將 setName 方法修改如下:
public void setName(String name){
this.name = name;
}
在調用上面的 main 方法進行賦值,打印的結果就是 Marry 了。
this 表示當前對象,也就是調用該方法的對象,對象.name 肯定就是調用的成員變量。
2、調用構造方法
構造方法是與類同名的一個方法,構造方法沒有返回值,但是也不能用 void 來修飾。在一個類中,必須存在一個構造方法,如果沒有,編譯器會在編譯的時候自動為這個類添加一個無參構造方法。一個類能夠存在多個構造方法,調用的時候根據參數來區分。
package com.ys.test;
/**
* Create by YSOcean
*/
public class ThisTest {
private String name;
public ThisTest(){
this("Marry");
}
public ThisTest(String name) {
this.name = name;
}
}
通過 this("Marry") 來調用另外一個構造方法 ThisTest(String name) 來給成員變量初始化賦值。
注意:通過 this 來調用構造方法,只能將這條代碼放在構造函數的第一行,這是編譯器的規定,如下所示:放在第二行會報錯。
3、調用普通方法
this 表示當前對象,那么肯定能夠調用當前類的普通方法。
public void printName(){
this.say();
}
public void say(){
System.out.println("say method...");
}
第 2 行代碼,在 printName() 方法內部調用了 say() 方法。
4、返回當前對象
/**
* Create by YSOcean
*/
public class ThisTest {
public Object newObject(){
return this;
}
}
這表示的意思是誰調用 newObject() 方法,那么就返回誰的引用。
5、小結
好了,這就是Java中對 this 關鍵詞的介紹,記住一句話 this 代表的就是當前。
-
JAVA
+關注
關注
19文章
2975瀏覽量
105149 -
參數
+關注
關注
11文章
1859瀏覽量
32427 -
代碼
+關注
關注
30文章
4827瀏覽量
69054 -
編譯器
+關注
關注
1文章
1642瀏覽量
49286 -
this
+關注
關注
0文章
5瀏覽量
3269
發布評論請先 登錄
相關推薦
嵌入式軟件編程中關鍵字的用法和原理
介紹一下關鍵字extern的用法
關鍵字static的作用是什么
嵌入式程序員常見的const、static、volatile關鍵字
final關鍵字的用法
![final<b class='flag-5'>關鍵字</b>的<b class='flag-5'>用法</b>](https://file.elecfans.com/web2/M00/49/E0/pYYBAGKhvG6AdvMJAAAxrdGrrnM681.png)
java中static關鍵字的作用
java final關鍵字用法技巧匯總解析
![<b class='flag-5'>java</b> final<b class='flag-5'>關鍵字</b><b class='flag-5'>用法</b>技巧匯總解析](https://file1.elecfans.com//web2/M00/A6/FF/wKgZomUMQbmAG04fAAAO5jUfr-A472.jpg)
java中的final關鍵字所起的作用解析
C++中mutable關鍵字詳解與實戰
keil中C51關鍵字code用法
![keil<b class='flag-5'>中</b>C51<b class='flag-5'>關鍵字</b>code<b class='flag-5'>用法</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言中__attribute__ 關鍵字的用法
static關鍵字的三種用法
![static<b class='flag-5'>關鍵字</b>的三種<b class='flag-5'>用法</b>](https://file.elecfans.com/web2/M00/09/16/pYYBAGD0FvWAeWpFAAAb1Fux1oA753.jpg)
評論