一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

this關(guān)鍵字在Java中的用法

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-10 16:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

this 關(guān)鍵字只能在方法內(nèi)部使用,表示對“調(diào)用方法的那個對象”的引用。

其實簡單來說 this 關(guān)鍵字就是表示當(dāng)前對象,下面我們來具體介紹 this 關(guān)鍵字在Java中的用法。

1、調(diào)用成員變量

在一個類的方法內(nèi)部,如果我們想調(diào)用其成員變量,不用 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 類中創(chuàng)建了一個 name 屬性,然后創(chuàng)建了一個 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
   }

打印結(jié)果是 Tom,而不是我們重新設(shè)置的 Marry,顯然這種方式是不能在方法內(nèi)部調(diào)用到成員變量的。因為形參的名字和成員變量的名字相同,setName 方法內(nèi)部的 name = name,根據(jù)最近原則,編譯器默認(rèn)是將這兩個 name 屬性都解析為形參 name,從而導(dǎo)致我們設(shè)值操作和成員變量 name 完全沒有關(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)前對象,也就是調(diào)用該方法的對象,對象.name 肯定就是調(diào)用的成員變量。

2、調(diào)用構(gòu)造方法

構(gòu)造方法是與類同名的一個方法,構(gòu)造方法沒有返回值,但是也不能用 void 來修飾。在一個類中,必須存在一個構(gòu)造方法,如果沒有,編譯器會在編譯的時候自動為這個類添加一個無參構(gòu)造方法。一個類能夠存在多個構(gòu)造方法,調(diào)用的時候根據(jù)參數(shù)來區(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;
    }
}

通過 this("Marry") 來調(diào)用另外一個構(gòu)造方法 ThisTest(String name) 來給成員變量初始化賦值。

注意:通過 this 來調(diào)用構(gòu)造方法,只能將這條代碼放在構(gòu)造函數(shù)的第一行,這是編譯器的規(guī)定,如下所示:放在第二行會報錯。

圖片

3、調(diào)用普通方法

this 表示當(dāng)前對象,那么肯定能夠調(diào)用當(dāng)前類的普通方法。

public void printName(){
    this.say();
}

public void say(){
    System.out.println("say method...");
}

第 2 行代碼,在 printName() 方法內(nèi)部調(diào)用了 say() 方法。

4、返回當(dāng)前對象

/**
 * Create by YSOcean
 */
public class ThisTest {

    public Object newObject(){
        return  this;
    }
}

這表示的意思是誰調(diào)用 newObject() 方法,那么就返回誰的引用。

5、小結(jié)

好了,這就是Java中對 this 關(guān)鍵詞的介紹,記住一句話 this 代表的就是當(dāng)前。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2989

    瀏覽量

    109587
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1867

    瀏覽量

    33075
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70705
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1662

    瀏覽量

    50203
  • this
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    3342
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論