this 關(guān)鍵字只能在方法內(nèi)部使用,表示對(duì)“調(diào)用方法的那個(gè)對(duì)象”的引用。
其實(shí)簡(jiǎn)單來(lái)說(shuō) this 關(guān)鍵字就是表示當(dāng)前對(duì)象,下面我們來(lái)具體介紹 this 關(guān)鍵字在Java中的用法。
1、調(diào)用成員變量
在一個(gè)類(lèi)的方法內(nèi)部,如果我們想調(diào)用其成員變量,不用 this,我們會(huì)怎么做?
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;
}
}
看上面的代碼,我們?cè)?ThisTest 類(lèi)中創(chuàng)建了一個(gè) name 屬性,然后創(chuàng)建了一個(gè) setName 方法,注意這個(gè)方法的形參也是 String name,那么我們通過(guò) name = name 這樣賦值,會(huì)改變成員變量 name 的屬性嗎?
public static void main(String[] args) {
ThisTest tt = new ThisTest();
tt.setName("Marry");
System.out.println(tt.getName());//Tom
}
打印結(jié)果是 Tom,而不是我們重新設(shè)置的 Marry,顯然這種方式是不能在方法內(nèi)部調(diào)用到成員變量的。因?yàn)樾螀⒌拿趾统蓡T變量的名字相同,setName 方法內(nèi)部的 name = name,根據(jù)最近原則,編譯器默認(rèn)是將這兩個(gè) name 屬性都解析為形參 name,從而導(dǎo)致我們?cè)O(shè)值操作和成員變量 name 完全沒(méi)有關(guān)系,當(dāng)然設(shè)置不了。
解決辦法就是使用 this 關(guān)鍵字。我們將 setName 方法修改如下:
public void setName(String name){
this.name = name;
}
在調(diào)用上面的 main 方法進(jìn)行賦值,打印的結(jié)果就是 Marry 了。
this 表示當(dāng)前對(duì)象,也就是調(diào)用該方法的對(duì)象,對(duì)象.name 肯定就是調(diào)用的成員變量。
2、調(diào)用構(gòu)造方法
構(gòu)造方法是與類(lèi)同名的一個(gè)方法,構(gòu)造方法沒(méi)有返回值,但是也不能用 void 來(lái)修飾。在一個(gè)類(lèi)中,必須存在一個(gè)構(gòu)造方法,如果沒(méi)有,編譯器會(huì)在編譯的時(shí)候自動(dòng)為這個(gè)類(lèi)添加一個(gè)無(wú)參構(gòu)造方法。一個(gè)類(lèi)能夠存在多個(gè)構(gòu)造方法,調(diào)用的時(shí)候根據(jù)參數(shù)來(lái)區(qū)分。
package com.ys.test;
/**
* Create by YSOcean
*/
public class ThisTest {
private String name;
public ThisTest(){
this("Marry");
}
public ThisTest(String name) {
this.name = name;
}
}
通過(guò) this("Marry") 來(lái)調(diào)用另外一個(gè)構(gòu)造方法 ThisTest(String name) 來(lái)給成員變量初始化賦值。
注意:通過(guò) this 來(lái)調(diào)用構(gòu)造方法,只能將這條代碼放在構(gòu)造函數(shù)的第一行,這是編譯器的規(guī)定,如下所示:放在第二行會(huì)報(bào)錯(cuò)。
3、調(diào)用普通方法
this 表示當(dāng)前對(duì)象,那么肯定能夠調(diào)用當(dāng)前類(lèi)的普通方法。
public void printName(){
this.say();
}
public void say(){
System.out.println("say method...");
}
第 2 行代碼,在 printName() 方法內(nèi)部調(diào)用了 say() 方法。
4、返回當(dāng)前對(duì)象
/**
* Create by YSOcean
*/
public class ThisTest {
public Object newObject(){
return this;
}
}
這表示的意思是誰(shuí)調(diào)用 newObject() 方法,那么就返回誰(shuí)的引用。
5、小結(jié)
好了,這就是Java中對(duì) this 關(guān)鍵詞的介紹,記住一句話(huà) this 代表的就是當(dāng)前。
-
JAVA
+關(guān)注
關(guān)注
19文章
2980瀏覽量
105720 -
參數(shù)
+關(guān)注
關(guān)注
11文章
1865瀏覽量
32573 -
代碼
+關(guān)注
關(guān)注
30文章
4858瀏覽量
69551 -
編譯器
+關(guān)注
關(guān)注
1文章
1645瀏覽量
49473 -
this
+關(guān)注
關(guān)注
0文章
5瀏覽量
3282
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
嵌入式軟件編程中關(guān)鍵字的用法和原理
介紹一下關(guān)鍵字extern的用法
關(guān)鍵字static的作用是什么
嵌入式程序員常見(jiàn)的const、static、volatile關(guān)鍵字
IAR能否在整個(gè)工程中搜索關(guān)鍵字?
final關(guān)鍵字的用法

java中static關(guān)鍵字的作用
java final關(guān)鍵字用法技巧匯總解析

java中的final關(guān)鍵字所起的作用解析
C++中mutable關(guān)鍵字詳解與實(shí)戰(zhàn)
keil中C51關(guān)鍵字code用法

C語(yǔ)言中__attribute__ 關(guān)鍵字的用法
const關(guān)鍵字應(yīng)用總結(jié)
static關(guān)鍵字的三種用法

評(píng)論