欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java關(guān)鍵字this使用方法詳細(xì)講解(通俗易懂)

 更新時(shí)間:2025年01月18日 11:36:59   作者:白白白鯉魚  
這篇文章主要介紹了Java關(guān)鍵字this使用方法的相關(guān)資料,Java關(guān)鍵字this主要用于在方法體內(nèi)引用當(dāng)前對(duì)象,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

this關(guān)鍵字主要有以下三個(gè)地方使用

在方法體中引用當(dāng)前對(duì)象,即其方法被調(diào)用的對(duì)象,以便將當(dāng)前對(duì)象的實(shí)例變量或當(dāng)前對(duì)象作為參數(shù)傳遞給其他方法。

① t = this.x;  要在方法中引用當(dāng)前對(duì)象,可以使用關(guān)鍵字 this。

② return this;  作為當(dāng)前方法的返回值等。

③ z.resetData(this); 關(guān)鍵字 this 指向當(dāng)前對(duì)象,可用于任何可使用對(duì)象引用的地方:在句點(diǎn)表示法中,作為方法的參數(shù);

下面是一些使用 this 的例子,其中的注釋對(duì)相應(yīng)的用法做了說明。

一、t = this.x;

this 用于指代當(dāng)前對(duì)象,而 .x 則是該對(duì)象的屬性。因此,this.x 表示當(dāng)前對(duì)象的屬性 x

public class MyClass {
    private int x;
    
    public MyClass(int x) {
        this.x = x; // 設(shè)置當(dāng)前對(duì)象的屬性 x
    }
    
    public int getX() {
        return this.x; // 返回當(dāng)前對(duì)象的屬性 x
    }
    
    public static void main(String[] args) {
        MyClass obj = new MyClass(10);
        int t = obj.getX(); // 使用 this.x 賦值給變量 t
    }
}

還有在內(nèi)部類中,使用this關(guān)鍵字引用外部類對(duì)象。

public class OuterClass {
    private int value;
 
    public void outerMethod() {
        InnerClass inner = new InnerClass();
        inner.innerMethod();
    }
 
    public class InnerClass {
        public void innerMethod() {
            OuterClass.this.value = 10; // 使用this關(guān)鍵字引用外部類對(duì)象的成員變量
        }
    }
}

二、return this;

return this; 表示從當(dāng)前方法中返回當(dāng)前對(duì)象的引用,即返回指向當(dāng)前對(duì)象的指針或引用。

當(dāng)一個(gè)方法的返回類型是類本身(或該類的父類或接口),而不是基本數(shù)據(jù)類型或其他對(duì)象類型時(shí),可以使用 return this; 來返回當(dāng)前對(duì)象的引用。

例如,在一個(gè)類的方法中,如果你想要返回調(diào)用該方法的對(duì)象本身,而不是其他值,你可以使用 return this;。這在鏈?zhǔn)秸{(diào)用或者需要返回當(dāng)前對(duì)象的場(chǎng)景中特別有用。

public class Leaf {
    public static void main(String[] args){

        Leaf leaf = new Leaf();
        leaf.increment().increment().increment().print();
    }

    int i = 0;
     Leaf increment(){
         i++;
         return  this;
     }
     void print(){
         System.out.println("i = " + i);
     }
}

increment方法用于遞增實(shí)例變量i的值并返回當(dāng)前對(duì)象的引用,以便支持方法鏈的形式調(diào)用,實(shí)現(xiàn)了在一個(gè)語句中對(duì)同一個(gè)對(duì)象進(jìn)行了多次操作

三、Peeler.peel(this);

Apple 需要調(diào)用 Peeler.peel() 方法,它是一個(gè)外部的工具方法,為了將自身傳遞給外部方法,Apple必須使用 this 關(guān)鍵字。

/**
 * 這段代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的場(chǎng)景,演示了對(duì)象間的方法調(diào)用和 toString 方法的使用。
 * 在 main 方法中創(chuàng)建了一個(gè) Person 對(duì)象,并調(diào)用其 eat 方法,傳入一個(gè)新創(chuàng)建的 Apple 對(duì)象。
 * eat 方法內(nèi)部調(diào)用了傳入的 Apple 對(duì)象的 getPeeled 方法,獲取削皮后的蘋果對(duì)象。
 * getPeeled 方法內(nèi)部調(diào)用了 Peeler 類的 peel 靜態(tài)方法,對(duì)當(dāng)前蘋果對(duì)象進(jìn)行削皮操作,并返回結(jié)果。
 * 削皮操作完成后,削皮后的蘋果對(duì)象被打印輸出到控制臺(tái)。
 */

public class PassingThis {
    public static void main(String[] args) {
        //在 main 方法中創(chuàng)建了一個(gè) Person 對(duì)象,并調(diào)用其 eat 方法,傳入一個(gè)新創(chuàng)建的 Apple 對(duì)象。
        new Person().eat(new Apple());
    }
}

class Person {

    // Person 類中定義了一個(gè) eat 方法,接受一個(gè) Apple 對(duì)象作為參數(shù)。調(diào)用傳入的 Apple 對(duì)象的 getPeeled 方法,獲取削皮后的蘋果對(duì)象,然后打印輸出這個(gè)削皮后的蘋果對(duì)象。

    public void eat(Apple apple) {
        Apple peeled = apple.getPeeled();
        // 直接輸出 peeled 對(duì)象,會(huì)調(diào)用其 toString 方法
        System.out.println("這個(gè)蘋果是:" + peeled);
    }
}

class Peeler {

    static Apple peel(Apple apple) {
        // Peeler 類中定義了一個(gè)靜態(tài)方法 peel,接受一個(gè) Apple 對(duì)象作為參數(shù),并對(duì)這個(gè)蘋果對(duì)象進(jìn)行削皮操作,削皮操作非常簡(jiǎn)單,只是直接返回傳入的蘋果對(duì)象,沒有進(jìn)行實(shí)際的削皮操作。
        return apple;
    }
}

class Apple {
    Apple getPeeled() {
        // Apple 類中定義了一個(gè) getPeeled 方法,它返回一個(gè)經(jīng)過削皮后的蘋果對(duì)象。
        // 在這個(gè)方法中,通過調(diào)用 Peeler 類的 peel 靜態(tài)方法來實(shí)現(xiàn)對(duì)當(dāng)前蘋果對(duì)象的削皮操作,并將結(jié)果返回。
        return Peeler.peel(this);
    }

    @Override
    public String toString() {
        // 在 Apple 類中重寫了 toString 方法,使其返回一個(gè)描述削皮后蘋果的字符串,這樣在打印輸出時(shí)就會(huì)顯示你自定義的描述,而不是默認(rèn)的類名和哈希碼。
        return "削皮后的蘋果";
    }
}

注意:

this 關(guān)鍵字只能在方法內(nèi)部使用,表示對(duì)“調(diào)用方法的那個(gè)對(duì)象”的引用。同時(shí),如果在方法內(nèi)部調(diào)用同一個(gè)類的同一個(gè)方法,就直接調(diào)用,不用加this。

public class Example {
    private int value;

    public Example(int value) {
        this.value = value;
    }

    // 方法內(nèi)部使用this關(guān)鍵字引用當(dāng)前對(duì)象,并返回當(dāng)前對(duì)象的值
    public int getValue() {
        return this.value;
    }

    // 方法內(nèi)部調(diào)用同一個(gè)類的同一個(gè)方法,不需要加this
    public void printValue() {
        int val = getValue(); // 直接調(diào)用getValue方法
        System.out.println("Value: " + val);
    }

    public static void main(String[] args) {
        Example example = new Example(10);
        example.printValue();
    }
}

這個(gè)示例中,Example類有一個(gè)私有成員變量value和兩個(gè)公共方法getValue和printValue。在getValue方法中,使用了this關(guān)鍵字來引用當(dāng)前對(duì)象,并返回value的值。而在printValue方法中,直接調(diào)用了getValue方法,不需要加this關(guān)鍵字。在main方法中,創(chuàng)建了Example類的實(shí)例對(duì)象,并調(diào)用了printValue方法,輸出value的值。

參考:

總結(jié)

到此這篇關(guān)于Java關(guān)鍵字this使用方法的文章就介紹到這了,更多相關(guān)Java關(guān)鍵字this使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中byte、byte數(shù)組與int、long的轉(zhuǎn)換詳解

    Java中byte、byte數(shù)組與int、long的轉(zhuǎn)換詳解

    這篇文章分別給大家介紹了Java中byte和int之間的轉(zhuǎn)換、Java中 byte數(shù)組和int之間的轉(zhuǎn)換、Java中byte數(shù)組和long之間的轉(zhuǎn)換以及整理了整體工具類的源碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Java壓縮文件操作詳解

    Java壓縮文件操作詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言進(jìn)行壓縮文件操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • Spring Data JPA 關(guān)鍵字Exists的用法說明

    Spring Data JPA 關(guān)鍵字Exists的用法說明

    這篇文章主要介紹了Spring Data JPA 關(guān)鍵字Exists的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • IDEA報(bào)錯(cuò):java:無效的源發(fā)行版21解決方式

    IDEA報(bào)錯(cuò):java:無效的源發(fā)行版21解決方式

    這篇文章主要給大家介紹了關(guān)于IDEA報(bào)錯(cuò):java:無效的源發(fā)行版21的解決方式,這個(gè)錯(cuò)誤是因?yàn)槟愕捻?xiàng)目使用的Java版本與你的IDEA使用的Java版本不一致導(dǎo)致的,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • lambdaQueryWrapper多條件嵌套查詢方式

    lambdaQueryWrapper多條件嵌套查詢方式

    這篇文章主要介紹了lambdaQueryWrapper多條件嵌套查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Java中的使用及連接Redis數(shù)據(jù)庫(附源碼)

    Java中的使用及連接Redis數(shù)據(jù)庫(附源碼)

    這篇文章主要介紹了Java中的使用及連接Redis數(shù)據(jù)庫(附源碼),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Spring?Security中如何獲取AuthenticationManager對(duì)象

    Spring?Security中如何獲取AuthenticationManager對(duì)象

    有時(shí)需要使用AuthenticationManager(以下簡(jiǎn)稱Manager)對(duì)象,可是這個(gè)對(duì)象不是Bean,沒有直接保存在Spring的Bean庫中,那么如何獲取Spring Security中的這個(gè)對(duì)象呢,需要的朋友可以參考下
    2022-11-11
  • ConcurrentModificationException日志關(guān)鍵字報(bào)警思考分析

    ConcurrentModificationException日志關(guān)鍵字報(bào)警思考分析

    本文將記錄和分析日志中的ConcurrentModificationException關(guān)鍵字報(bào)警,還有一些我的思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-12-12
  • SpringMVC九大組件之HandlerMapping詳解

    SpringMVC九大組件之HandlerMapping詳解

    這篇文章主要介紹了SpringMVC九大組件之HandlerMapping詳解,HandlerMapping 叫做處理器映射器,它的作用就是根據(jù)當(dāng)前 request 找到對(duì)應(yīng)的 Handler 和 Interceptor,然后封裝成一個(gè) HandlerExecutionChain 對(duì)象返回,需要的朋友可以參考下
    2023-09-09
  • Spring中的ThreadPoolTaskExecutor線程池使用詳解

    Spring中的ThreadPoolTaskExecutor線程池使用詳解

    這篇文章主要介紹了Spring中的ThreadPoolTaskExecutor線程池使用詳解,ThreadPoolTaskExecutor 是 Spring框架提供的一個(gè)線程池實(shí)現(xiàn),用于管理和執(zhí)行多線程任務(wù),它是TaskExecutor接口的實(shí)現(xiàn),提供了在 Spring 應(yīng)用程序中創(chuàng)建和配置線程池的便捷方式,需要的朋友可以參考下
    2024-01-01

最新評(píng)論