更新時(shí)間:2020-09-15 16:37:36 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽5822次
在java的學(xué)習(xí)中,當(dāng)接觸到類這一章的時(shí)候,就會(huì)避免不了的接觸到this關(guān)鍵字,今天小編就來(lái)講講that關(guān)鍵字的作用有哪些
一、java中出現(xiàn)了一個(gè)小問題(就近原則問題)
java中類實(shí)現(xiàn)了封裝并通過private對(duì)成員變量進(jìn)行了私有化。但是又出現(xiàn)了新的問題。下面看圖片。
這是創(chuàng)建了一個(gè)person類,并定義了兩個(gè)私有的成員變量name和age還有一個(gè)方法speak()方法。但是要注意到方法speak()中也有兩個(gè)局部變量name和age這兩個(gè)變量和成員變量重名了。
二、局部變量和成員變量重名就會(huì)產(chǎn)生一個(gè)問題。
根據(jù)java中的就近原則,speak()方法中打印出來(lái)的name和age就是上面的“哈哈”和“16”,即使此時(shí)外類通過set方法賦值,照樣打印出來(lái)的是方法中局部變量賦的值。這就是java中的就近原則。
三、處理問題:如何讓speak()方法打印成員變量賦的值呢?
這就引入了this關(guān)鍵字。
this關(guān)鍵字的作用就是用來(lái)區(qū)分成員變量和局部變量的。
使用方法:this.變量。就代表成員變量。如圖:
如圖加上this關(guān)鍵字就表示成員變量了。
四、this內(nèi)存圖:
由內(nèi)存圖可以看出this是本類對(duì)象的引用,那個(gè)對(duì)象調(diào)用,this就隸屬那個(gè)對(duì)象,而對(duì)象是堆內(nèi)存地址,this也就變成了堆內(nèi)存首地址。成員變量在堆內(nèi)存中因此this也就成為了指向成員變量的對(duì)象。可以通過內(nèi)存圖理解this.
五、set方法的變化理解
先看圖:
這是set方法,里面有個(gè)形參age就相當(dāng)于該方法有一個(gè)局部變量age,也和成員變量發(fā)生了沖突。如果按圖中賦值,根據(jù)就近原則只是將值賦給了自己。如何解決這個(gè)問題?
也是通過this的方法進(jìn)行解決的。看圖
通過this賦值就將值賦給了成員變量。
六、this關(guān)鍵字的調(diào)用者,比年齡案例
如圖:本案例就是為了強(qiáng)調(diào):那個(gè)對(duì)象調(diào)用了this,this就指向了那個(gè)對(duì)象。
這是兩個(gè)年齡的比較,首先是p1調(diào)用了this,this指代的就是p1的首地址,compare參數(shù)是p2,最終會(huì)是P1與p2的比較。
也就是說,this關(guān)鍵字就是本類對(duì)象的引用,以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java that關(guān)鍵字的作用有哪些”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743