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

徹底理解Java中this 關(guān)鍵字

 更新時間:2016年05月25日 17:24:44   作者:Devin*  
這篇文章主要介紹了徹底理解Java中this 關(guān)鍵字的相關(guān)資料,非常不錯,具有參考價值,需要的朋友可以參考下

this關(guān)鍵字再java里面是一個我認(rèn)為非常不好理解的概念,:)也許是太笨的原因

this 關(guān)鍵字的含義:可為以調(diào)用了其方法的那個對象生成相應(yīng)的句柄。

怎么理解這段話呢?

thinking in java里面有這么一個例子

有兩個同一個類型的對象,分別叫做a和b,那我們怎樣區(qū)別在調(diào)用方法f()的時候,是誰再調(diào)用這個方法呢?

例如:

class Banana {
void f(int i){
/***方法主體*****/
}
}
Banana a = new Banana();//生成Banana的對象a
Banana b= new Banana();//生成Banana的對象b
a.f(1);
b.f(2);

那么編譯器是怎樣知道你是要調(diào)用哪個對象的f()函數(shù)呢?其實幕后的傳送應(yīng)該是:

a.f(1)<<====>>Banana.f(a,1);
b.f(1)<<====>>Banana.f(b,2);

我理解為:生成一個Banana的對象a,調(diào)用a的方法f()的時候,會同時生成一個指向這個對象的一個句柄this

這里就是this 這個指向?qū)ο?new Banana()或者 this 在這里等價于句柄 a;this《==》a;

當(dāng)我們在一個方法的內(nèi)部的時候。并且希望獲得當(dāng)前對象的句柄,由于這個句柄時編譯器秘密傳遞的,所以時沒有明確的標(biāo)志符來識別的,這個時候我們可以使用this這個關(guān)鍵字

this的通俗含義:不論是生成的哪個對象調(diào)用了這個方法,都會生成一個指向這個對象的指針 this

thinking in java 里面的經(jīng)典例子:

public class Leaf{
private int i=0;
Leaf increment(){
i++;
return this;
}
void print(){
Systme.out.println("i="+i);
public static void main (String [] args)
{
Leaf x =new Leaf();
x.increment().increment(). increment().print();
}
}

1、生成一個對象的句柄 x ;語法格式為 Leaf x;

2、生成一個Leaf class的對象;語法格式為 new Leaf();

3、建立句柄與對象的聯(lián)系 ;語法為 x = new Leaf();

4、調(diào)用對象 new Leaf()里面的方法 increment();語法為 x.increment()

×××誰調(diào)用了方法 increment()呢?是Leaf類的對象x(或者是new Leaf()),所以對應(yīng)系統(tǒng)會生成一個this 引用,并把它秘密的指向 x 或者是 指向 new Leaf()這個對象,所以 increment()返回的是一個指向x的引用!是一個內(nèi)存的地址,我們可以把它打印出來看看,就知道了!

以上內(nèi)容是小編給大家介紹的Java中this 關(guān)鍵字的知識,希望對大家有所幫助!

相關(guān)文章

  • Springboot 跨域配置無效及接口訪問報錯的解決方法

    Springboot 跨域配置無效及接口訪問報錯的解決方法

    這篇文章主要介紹了Springboot 跨域配置無效及接口訪問報錯的解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 解析spring boot與ireport 整合問題

    解析spring boot與ireport 整合問題

    本文通過實例代碼給大家介紹了spring boot 與 ireport 整合問題,關(guān)于pom文件依賴的問題通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-10-10
  • Java實現(xiàn)兩人五子棋游戲(六) 行棋方變換

    Java實現(xiàn)兩人五子棋游戲(六) 行棋方變換

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)一個簡單的兩人五子棋游戲,行棋方變換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • SpringBoot復(fù)雜參數(shù)應(yīng)用詳細(xì)講解

    SpringBoot復(fù)雜參數(shù)應(yīng)用詳細(xì)講解

    我們在編寫接口時會傳入復(fù)雜參數(shù),如Map、Model等,這種類似的參數(shù)會有相應(yīng)的參數(shù)解析器進行解析,并且最后會將解析出的值放到request域中,下面我們一起來探析一下其中的原理
    2022-09-09
  • 使用arthas命令redefine實現(xiàn)Java熱更新(推薦)

    使用arthas命令redefine實現(xiàn)Java熱更新(推薦)

    今天分享一個非常重要的命令 redefine ,主要作用是加載外部的 .class 文件,用來替換 JVM 已經(jīng)加載的類,總結(jié)起來就是實現(xiàn)了 Java 的熱更新,感興趣的朋友跟隨小編一起看看吧
    2020-05-05
  • Java詳解IO流創(chuàng)建讀取與寫入操作

    Java詳解IO流創(chuàng)建讀取與寫入操作

    這篇文章主要介紹了Java IO流,同時也介紹了流中的一些相關(guān)的內(nèi)容,并且通過大量的案例供大家理解。最后通過一些經(jīng)典的案例幫助大家對前面所學(xué)的知識做了一個綜合的應(yīng)用,需要的朋友可以參考一下
    2022-05-05
  • SpringMVC Tomcat控制臺亂碼問題解決方案

    SpringMVC Tomcat控制臺亂碼問題解決方案

    這篇文章主要介紹了SpringMVC Tomcat控制臺亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java elasticSearch-api的具體操作步驟講解

    Java elasticSearch-api的具體操作步驟講解

    這篇文章主要介紹了elasticSearch-api的具體操作步驟講解,本文通過詳細(xì)的步驟介紹和圖文代碼展示講解了該項技術(shù),需要的朋友可以參考下
    2021-06-06
  • Maven引用自定義jar包方式

    Maven引用自定義jar包方式

    這篇文章主要介紹了Maven引用自定義jar包方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java中volatile和synchronized的區(qū)別與聯(lián)系

    java中volatile和synchronized的區(qū)別與聯(lián)系

    這篇文章主要介紹了java中volatile和synchronized的區(qū)別與聯(lián)系的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10

最新評論