国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 14:17:31
字體:
供稿:網(wǎng)友

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

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

怎么理解這段話呢?

thinking in java里面有這么一個(gè)例子

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

例如:

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

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

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

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

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

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

this的通俗含義:不論是生成的哪個(gè)對象調(diào)用了這個(gè)方法,都會(huì)生成一個(gè)指向這個(gè)對象的指針 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、生成一個(gè)對象的句柄 x ;語法格式為 Leaf x;

2、生成一個(gè)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)會(huì)生成一個(gè)this 引用,并把它秘密的指向 x 或者是 指向 new Leaf()這個(gè)對象,所以 increment()返回的是一個(gè)指向x的引用!是一個(gè)內(nèi)存的地址,我們可以把它打印出來看看,就知道了!

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汽车| 桐梓县| 班玛县| 昆明市| 高阳县| 宜宾县| 汝州市| 玛纳斯县| 喀喇沁旗| 洛阳市| 昌邑市| 尼木县| 额敏县| 永济市| 彩票| 阳泉市| 柘城县| 娄底市| 临漳县| 穆棱市| 潼南县| 岳西县| 监利县| 惠州市| 德令哈市| 南昌县| 黎川县| 宣城市| 平江县| 类乌齐县| 浠水县| 平顶山市| 阳东县| 姜堰市| 永吉县| 阿克| 武邑县| 彰化县| 延吉市| 镇雄县| 松桃|