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

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

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

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

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-10 16:49 ? 次閱讀

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)前。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 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
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言關(guān)鍵字const的幾種用法

    本期來(lái)講解一個(gè)C語(yǔ)言的關(guān)鍵字——const。
    發(fā)表于 06-21 11:05 ?1797次閱讀
    C語(yǔ)言<b class='flag-5'>關(guān)鍵字</b>const的幾種<b class='flag-5'>用法</b>

    嵌入式軟件編程關(guān)鍵字用法和原理

    ,但是某些關(guān)鍵字,例如const、static、extern和volatile等,不同的場(chǎng)合具有不同的含義,而且某些用法晦澀難懂,為此本文詳細(xì)介紹這些關(guān)鍵字
    發(fā)表于 06-20 07:37

    介紹一下關(guān)鍵字extern的用法

    學(xué)單片機(jī)C語(yǔ)言一定要熟悉關(guān)鍵字用法,本文介紹一下關(guān)鍵字extern的用法。1、extern的定義是:extern可以置于變量或者函數(shù)前,以標(biāo)示變量或者函數(shù)的定義
    發(fā)表于 07-15 06:38

    關(guān)鍵字static的作用是什么

    頭文件的ifndef/define/endif 的作用?1.關(guān)鍵字static的作用是什么1). 函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程維持其值不變。2).
    發(fā)表于 11-09 07:23

    嵌入式程序員常見(jiàn)的const、static、volatile關(guān)鍵字

    嵌入式程序員const、static、volatile三個(gè)關(guān)鍵字的樸素認(rèn)識(shí)摘要:C語(yǔ)言程序編寫(xiě),const、static關(guān)鍵字是比較熟悉的,volatile
    發(fā)表于 12-21 06:08

    IAR能否整個(gè)工程搜索關(guān)鍵字?

    像mdk可以整個(gè)工程搜索關(guān)鍵字 IAR應(yīng)該也有類(lèi)似的功能吧,但是我貌似沒(méi)有找到
    發(fā)表于 11-08 07:21

    final關(guān)鍵字用法

    Java,final關(guān)鍵字可以用來(lái)修飾類(lèi)、方法和變量(包括成員變量和局部變量)。下面就從這三個(gè)方面來(lái)了解一下final關(guān)鍵字的基本
    發(fā)表于 09-27 10:36 ?0次下載
    final<b class='flag-5'>關(guān)鍵字</b>的<b class='flag-5'>用法</b>

    javastatic關(guān)鍵字的作用

    static關(guān)鍵字是很多朋友在編寫(xiě)代碼和閱讀代碼時(shí)碰到的比較難以理解的一個(gè)關(guān)鍵字,也是各大公司的面試官喜歡面試時(shí)問(wèn)到的知識(shí)點(diǎn)之一。下面就先講述一下static關(guān)鍵字
    發(fā)表于 09-27 17:12 ?0次下載

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

    談到final關(guān)鍵字,想必很多人都不陌生,使用匿名內(nèi)部類(lèi)的時(shí)候可能會(huì)經(jīng)常用到final關(guān)鍵字。另外,Java的String類(lèi)就是一個(gè)fi
    發(fā)表于 12-01 11:02 ?1164次閱讀
    <b class='flag-5'>java</b> final<b class='flag-5'>關(guān)鍵字</b><b class='flag-5'>用法</b>技巧匯總解析

    java的final關(guān)鍵字所起的作用解析

    java編程語(yǔ)言中,有時(shí)候需要告知編譯器一段數(shù)據(jù)是不變的編譯期常量。對(duì)于這種情況,編譯器可以將此常量值帶入需要用到它的計(jì)算式子當(dāng)中,這種在編譯時(shí)執(zhí)行計(jì)算式的方法減輕了運(yùn)行時(shí)的開(kāi)銷(xiāo)。通常,這類(lèi)常量數(shù)據(jù)都是基本類(lèi)型的數(shù)據(jù),并賦予關(guān)鍵字
    發(fā)表于 12-01 11:29 ?2901次閱讀

    C++mutable關(guān)鍵字詳解與實(shí)戰(zhàn)

    mutable關(guān)鍵字詳解與實(shí)戰(zhàn) C++mutable關(guān)鍵字是為了突破const關(guān)鍵字的限制,被mutable
    的頭像 發(fā)表于 09-10 09:23 ?5631次閱讀

    keilC51關(guān)鍵字code用法

    keil關(guān)鍵字code說(shuō)明?用unsigned int 或signed char等定義的變量都存儲(chǔ)單片機(jī)的RAM,程序可以隨意更改這
    發(fā)表于 11-29 10:36 ?13次下載
    keil<b class='flag-5'>中</b>C51<b class='flag-5'>關(guān)鍵字</b>code<b class='flag-5'>用法</b>

    C語(yǔ)言中__attribute__ 關(guān)鍵字用法

    嵌入式開(kāi)發(fā),離不開(kāi) C 語(yǔ)言,C語(yǔ)言中有很多語(yǔ)法會(huì)直接或間接影響你代碼的質(zhì)量,下面就來(lái)講講__attribute__ 關(guān)鍵字用法。 1. 什么是 __attribute__ GNU C 編譯器
    發(fā)表于 10-19 09:06 ?1.3w次閱讀

    const關(guān)鍵字應(yīng)用總結(jié)

    C++的const關(guān)鍵字用法非常靈活,而使用const將大大改善程序的健壯性
    的頭像 發(fā)表于 05-26 09:06 ?657次閱讀

    static關(guān)鍵字的三種用法

    變量(StaticVariables):C語(yǔ)言中,使用`static`關(guān)鍵字來(lái)聲明靜態(tài)變量是一種常見(jiàn)的用法,它具有以下主要作用:1.生存期延長(zhǎng):靜態(tài)變量的生存期程序的整個(gè)運(yùn)行期間,
    的頭像 發(fā)表于 11-10 08:00 ?746次閱讀
    static<b class='flag-5'>關(guān)鍵字</b>的三種<b class='flag-5'>用法</b>