this關(guān)鍵字

  1. this 調(diào)用屬性;
  2. this調(diào)用方法
  3. 利用this表示當(dāng)前對象

1. 調(diào)用屬性

范例:觀察代碼

class Book {
    private String title;
    private double price;
    public Book(String t , double p) {
        title = t;
        price = p;
    }
    //getter , setter 省略
    public String getInfo() {
        return "書名:" + title + "; 價格:" + price ;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Book book = new Book("Java" , 89.0);
        System.out.println(book.getInfo());
    }
}

注意構(gòu)造方法

public Book(String t , double p) {
  title = t;
  price = p;
}

這個構(gòu)造方法主要功能是為title和price兩個屬性初始化,為了更直觀,方法中的形參名稱可以做修改,直接將參數(shù)名稱改為屬性名稱一致。如:

public Book(String title , double price ) {
  title = title ;
  price = price ;
}

修改完成后,運行代碼發(fā)行,構(gòu)造方法傳遞的參數(shù)內(nèi)容沒有傳遞到屬性中。
因為再Java程序里面都是以“{}”為界限,如果現(xiàn)在屬性名稱與參數(shù)名稱出現(xiàn)了重名的情況下,如果沒有加入任何的限制,指的都是最近的"{}"內(nèi)的變量名稱。所以再這種情況下為了可以明確的找到要訪問的變量屬于類中的屬性的時候,需要再變量前面加上this,這樣就可以準確的進行性的標記。

public Book(String title , double price ) {
  this.title = title ;
  this.price = price ;
}

在以后的開發(fā)中,只要是訪問類中的屬性前面必須加上''this''

2. 調(diào)用方法

  1. 調(diào)用普通方法:
class Book {
    private String title;
    private double price;
    public Book(String t , double p) {
        title = t;
        price = p;
    }
    //getter , setter 省略
    public void print() {
        System.out.println("**************");
    }
    public String getInfo() {
        this.print();
        return "書名:" + title + "; 價格:" + price ;
    }
}

其中,this.print() 調(diào)用普通方法,關(guān)于調(diào)用普通方法時候需要this,并沒有明確的要求,即使不加this也表示本類調(diào)用的方法,但是為了代碼的嚴謹性,一定要加上this。

  1. 調(diào)用構(gòu)造方法
    范例:觀察問題
    現(xiàn)在定義Book類里面有三個構(gòu)造方法,沒個方法都要輸出一行提示纖細"新的Book類對象產(chǎn)生"。
class Book {
    private String title ;
    private double price ;
    public Book() {
        System.out.println("新的Book類對象產(chǎn)生");
    }
    public Book(String t) {
        System.out.println("新的Book類對象產(chǎn)生");
        this.title=t ;
    }
    public Book(String t , double p) {
        System.out.println("新的Book類對象產(chǎn)生");
        this.title = t ;
        this.price = p ;
    }
    //setter , getter 方法省略
    public String Info() {
       return "書名:" + this.title + " ,價格: " + this.price ;
    }
}

public class thisTest {
    public static void main(String[] args) {
        Book book = new Book();
        System.out.println(book.Info());
    }
}

觀察可以發(fā)現(xiàn),有重復(fù)代碼,消除重復(fù)代碼后:

class Book {
    private String title ;
    private double price ;
    public Book() {
        System.out.println("新的Book類對象產(chǎn)生");
    }
    public Book(String t) {
        this() ;    //調(diào)用本類的無參構(gòu)造
        this.title=t ;
    }
    public Book(String t , double p) {
        this(t) ;   //調(diào)用本類的單參構(gòu)造
        this.title = t ;
        this.price = p ;
    }
    //setter , getter 方法省略
    public String Info() {
       return "書名:" + this.title + " ,價格: " + this.price ;
    }
}

public class thisTest {
    public static void main(String[] args) {
        Book book = new Book();
        System.out.println(book.Info());
    }
}

以上實現(xiàn)了構(gòu)造方法的互相調(diào)用,但是還要注意兩點:

  • 使用 "this()"調(diào)用構(gòu)造方法形式的代碼只能夠放在構(gòu)造方法的首行;
  • 進行構(gòu)造方法互相調(diào)用的時候,一定要保留調(diào)用的出口。

3. 表示當(dāng)前對象

所謂的當(dāng)前對象指的就是當(dāng)前正在調(diào)用類中方法的對象。
示例

class Book {
    public void print() {
        System.out.println("this =  " + this);
    }
}
public class thisTest {
    public static void main(String[] args) {
        Book book_1 = new Book();
        System.out.println("book_1 = " + book_1);
        book_1.print();
        System.out.println("------------------");
        Book book_2 = new Book();
        System.out.println("book_2 = " + book_2);
        book_2.print();
    }
}

示例結(jié)果

book_1 = thisDemo.Book@4554617c
this =  thisDemo.Book@4554617c
------------------
book_2 = thisDemo.Book@74a14482
this =  thisDemo.Book@74a14482

可以發(fā)現(xiàn)book_1 和 book_2 的內(nèi)存地址不一樣。但是哪個對象調(diào)用了print的方法,this就自動與此對象指向同一內(nèi)存地址,實際上this就是當(dāng)前調(diào)用方法的對象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 涵義 this關(guān)鍵字是一個非常重要的語法點。毫不夸張地說,不理解它的含義,大部分開發(fā)任務(wù)都無法完成。 首先,thi...
    許先生__閱讀 670評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 本章目標 掌握this關(guān)鍵字的使用 使用this調(diào)用其他構(gòu)造方法 使用this表示當(dāng)前對象 1、具體內(nèi)容 1.1、...
    孤意的學(xué)習(xí)筆記閱讀 264評論 0 0
  • 導(dǎo)語 不得不說,作為一名初級的前端開發(fā)者,this關(guān)鍵字這個問題對于我來說一直是一個痛點,什么是this?什么是函...
    Nicole_tiny閱讀 632評論 0 4
  • 一 第一次看到她的時候,我就想起之前不知在哪看過的一個小故事.今天不說這個故事,我想寫她. 記不得模樣了,每次路過...
    橘子是怪獸閱讀 309評論 0 0

友情鏈接更多精彩內(nèi)容