最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

java不理解this?一分鐘徹底弄懂this關(guān)鍵字

2023-02-07 15:14 作者:密云榛子IT教育  | 我要投稿

this ,翻譯為:這、這個(gè),在java中應(yīng)該翻譯為 “本對象” 或 “對象本身” ,指向的是對象自己

類似于日常的稱呼,比如,別人稱呼你的時(shí)候應(yīng)該用姓名,比如稱呼“趙云”,趙云很帥、趙云武功很強(qiáng),但是趙云自己稱呼自己應(yīng)該用“我”,趙云:我很帥、我武功很強(qiáng)。而“我”就相當(dāng)于this。


this 其實(shí)就是一個(gè)變量,本質(zhì)上和普通的引用類型變量一樣。

比如上面的稱呼,無論稱呼“趙云”、“我”、“你”,本質(zhì)都是稱呼,而且稱呼的對象都是趙云。

this也是如此, 和其他該類的引用類型變量一樣,本質(zhì)都是變量,指向的也是同一個(gè)對象,只不過this是內(nèi)置的變量而已。

為了讓大家更清楚的理解,我們簡單介紹下對象的創(chuàng)建過程,以及如何與變量關(guān)聯(lián)的。

比如下面的代碼:

當(dāng)main方法開始運(yùn)行時(shí),java虛擬機(jī)會為方法創(chuàng)建“本地變量表”,用于存儲方法參數(shù)值、方法內(nèi)的局部變量,比如args、u、u2。

之后運(yùn)行方法內(nèi)的代碼,new User(), 創(chuàng)建User對象,虛擬機(jī)會在內(nèi)存的堆中創(chuàng)建,比如創(chuàng)建的對象內(nèi)存地址為:00000001? , 之后調(diào)用類構(gòu)造方法初始化對象。

然后將創(chuàng)建的對象賦值給變量u,實(shí)際在本地變量表中,變量u存放的是對象的內(nèi)存地址:00000001

之后?User u2 = u, 將u賦值給變量u2, 也就是將00000001? 賦值給u2。這樣,變量u、u2指向的就是同一個(gè)對象。


其實(shí)this和變量u、u2是一樣的,也會存儲到本地變量表中,存儲的也是對象的地址。比如:

當(dāng)運(yùn)行到u.toString()方法時(shí),java虛擬機(jī)也會為該方法創(chuàng)建本地變量表,如圖:

注:java虛擬機(jī)會為每個(gè)正在運(yùn)行的方法都會創(chuàng)建一個(gè)本地變量表。

變量表中第一個(gè)位置存放的就是this,值也是對象的內(nèi)存地址。由此可見,this和其他引用變量是沒有本質(zhì)區(qū)別的。

此時(shí),u、u2、this指向的是同一個(gè)對象,驗(yàn)證一下:

調(diào)用compare方法,將變量u作為參數(shù)傳入, 讓其與this比較。

由于==運(yùn)算符用于引用類型時(shí),只有當(dāng)引用指向的是同一個(gè)對象時(shí)才為真,運(yùn)行輸出:

為什么要有this?


通過代碼可以發(fā)現(xiàn),當(dāng)局部變量與對象屬性同名時(shí),由于局部變量的優(yōu)先級高于對象屬性,優(yōu)先使用局部變量。

如果要訪問對象屬性,就必須要使用“對象.” 的方式,而this就是指向當(dāng)前對象的引用。


this使用注意事項(xiàng)

this 的作用范圍是對象內(nèi)部,可以在對象方法、構(gòu)造方法中使用

也可用于給屬性賦值


this不能用于靜態(tài)方法中


由于靜態(tài)方法是屬于整個(gè)類的,調(diào)用通過類名訪問,不需要?jiǎng)?chuàng)建對象,方法內(nèi)如果有this的話,是沒辦法確認(rèn)這個(gè)this是指向哪個(gè)對象的。

詳細(xì)的也可以觀看視頻教程:https://www.bilibili.com/video/BV1XM4y1X79j


java不理解this?一分鐘徹底弄懂this關(guān)鍵字的評論 (共 條)

分享到微博請遵守國家法律
夹江县| 郴州市| 民乐县| 定西市| 平潭县| 界首市| 黄浦区| 磐石市| 天台县| 虎林市| 神池县| 津南区| 定西市| 清流县| 扎鲁特旗| 彩票| 宁南县| 都昌县| 黄梅县| 肥西县| 平罗县| 东乡族自治县| 鹤山市| 南昌县| 苏尼特右旗| 安阳市| 宣化县| 九寨沟县| 宿松县| 宕昌县| 峨边| 呈贡县| 舒兰市| 和林格尔县| 阿拉善右旗| 新乡市| 海阳市| 泸水县| 鄂伦春自治旗| 东乡族自治县| 唐海县|