在java的學(xué)習(xí)中,當(dāng)接觸到類這一章的時候,就會避免不了的接觸到this關(guān)鍵字,今天小編就來講講that關(guān)鍵字的作用有哪些
一、java中出現(xiàn)了一個小問題(就近原則問題)
java中類實現(xiàn)了封裝并通過private對成員變量進(jìn)行了私有化。但是又出現(xiàn)了新的問題。下面看圖片。
這是創(chuàng)建了一個person類,并定義了兩個私有的成員變量name和age還有一個方法speak()方法。但是要注意到方法speak()中也有兩個局部變量name和age這兩個變量和成員變量重名了。
二、局部變量和成員變量重名就會產(chǎn)生一個問題。
根據(jù)java中的就近原則,speak()方法中打印出來的name和age就是上面的“哈哈”和“16”,即使此時外類通過set方法賦值,照樣打印出來的是方法中局部變量賦的值。這就是java中的就近原則。
三、處理問題:如何讓speak()方法打印成員變量賦的值呢?
這就引入了this關(guān)鍵字。
this關(guān)鍵字的作用就是用來區(qū)分成員變量和局部變量的。
使用方法:this.變量。就代表成員變量。如圖:
如圖加上this關(guān)鍵字就表示成員變量了。
四、this內(nèi)存圖:
由內(nèi)存圖可以看出this是本類對象的引用,那個對象調(diào)用,this就隸屬那個對象,而對象是堆內(nèi)存地址,this也就變成了堆內(nèi)存首地址。成員變量在堆內(nèi)存中因此this也就成為了指向成員變量的對象??梢酝ㄟ^內(nèi)存圖理解this.
五、set方法的變化理解
先看圖:
這是set方法,里面有個形參age就相當(dāng)于該方法有一個局部變量age,也和成員變量發(fā)生了沖突。如果按圖中賦值,根據(jù)就近原則只是將值賦給了自己。如何解決這個問題?
也是通過this的方法進(jìn)行解決的??磮D
通過this賦值就將值賦給了成員變量。
六、this關(guān)鍵字的調(diào)用者,比年齡案例
如圖:本案例就是為了強調(diào):那個對象調(diào)用了this,this就指向了那個對象。
這是兩個年齡的比較,首先是p1調(diào)用了this,this指代的就是p1的首地址,compare參數(shù)是p2,最終會是P1與p2的比較。
也就是說,this關(guān)鍵字就是本類對象的引用,以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機構(gòu)的小編針對“Java that關(guān)鍵字的作用有哪些”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。