this關鍵字在Java語言里非常重要,也是一個高頻使用的關鍵字,但是很多人并不理解this關鍵字的真正含義,只是簡單機械的使用,本文將帶你從編譯器的視角,深度解讀this關鍵字,知其然,并知其所以然,
1、this關鍵字的起源
我們先來討論一個有趣的問題,假如有一個BooK類,它有一個sell()方法,Book類創建兩個物件,分別是book1和book2,當sell()方法被呼叫的時候,書的數量就減少一本,問題來了哈!編譯器是如何知道sell()方法被book1呼叫的還是被book2呼叫的呢?
public class Book {
private int bookNumber; //書的數量
public void sell(int price){
bookNumber = bookNumber -1;//賣出去一本,書的數量就減1
}
}
public class Main {
public static void main(String[] args){
//創建物件
Book book1 = new Book();
Book book2 = new Book();
book1.sell(10);
book2.sell(20);
}
}
原因就在于編譯器在后臺對sell()方法做了一個小改動,它把呼叫該方法的物件作為第一個引數傳遞給了sell()方法,所以上述兩個物件對方法的呼叫就變成了這樣:
BooK.sell(book1,10);
Book.sell(book2,20);
這是編譯器的內部表達形式,不需要我們自己寫成這樣,我們如何使用sell()方法傳過來的物件呢?為此,有個專門的關鍵字就是this,this關鍵字表示對“呼叫方法的那個物件”的參考,只能在類的內部使用,
2、this的使用場景
我們來為Book類增加一個書籍數量初始化方法setBookNumber,在setBookNumber(int bookNumber)中,當形參int bookNumber和類的成員變數private int bookNumber重名時,我們就可以使用this關鍵字,呼叫類的內部成員變數,對成員變數bookNumber賦值,
public class Book {
private int bookNumber; //書的數量
public void setBookNumber(int bookNumber) {
this.bookNumber = bookNumber;
}
public void sell(int price){
bookNumber = bookNumber -1;//賣出去一本,書的數量就減1
}
}
此外,我們也可以在類的內部通過this關鍵字,回傳當前物件,
/******************************************************************************************
* 需要Java學習視頻和專案外包資訊的小伙伴,可以關注我的公眾號【碼農充電站】或者聯系我的微信
* 公眾號:碼農充電站
* 作者微信:it1529577
*****************************************************************************************/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275142.html
標籤:java
上一篇:基于IDEA部署Tomcat服務器,并在上面創建第一個servlet程式,實作前后端互動。然后做一個簡單的四則運算計算器。
下一篇:一維陣列中重復元素的去除
