更新時(shí)間:2020-07-09 15:46:00 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3747次
我們?cè)谧畛鯇W(xué)習(xí)編程的時(shí)候,就遇到過(guò)這樣一個(gè)關(guān)鍵字this,意思就是只帶當(dāng)前對(duì)象,其實(shí)this關(guān)鍵字還有很多其他的用途,因此就花了這篇文章好好的去介紹一下
為什么要引入this關(guān)鍵字?
現(xiàn)在出現(xiàn)一個(gè)問(wèn)題,就是你希望在方法的內(nèi)部去獲得當(dāng)前對(duì)象的引用。現(xiàn)在java提供了一個(gè)關(guān)鍵字this。他就表示當(dāng)前對(duì)象的引用。
使用this關(guān)鍵字
一、一個(gè)方法調(diào)用同一個(gè)類的另外一個(gè)方法,
這種情況是不需要使用this的。直接使用即可。
二.當(dāng)成員變量和局部變量重名時(shí),在方法中使用this時(shí),表示的是該方法所在類中的成員變量。(this是當(dāng)前對(duì)象自己)
結(jié)果為:
s=HelloWorld!
1->this.s=Hello
2->this.s=HelloWorld!
s=HelloWorld!
在這個(gè)例子中,構(gòu)造函數(shù)Hello中,參數(shù)s與類Hello的成員變量s同名,這時(shí)如果直接對(duì)s進(jìn)行操作則是對(duì)參數(shù)s進(jìn)行操作。若要對(duì)類Hello的成員變量s進(jìn)行操作就應(yīng)該用this進(jìn)行引用。運(yùn)行結(jié)果的第一行就是直接對(duì)構(gòu)造函數(shù)中傳遞過(guò)來(lái)的參數(shù)s進(jìn)行打印結(jié)果;第二行是對(duì)成員變量s的打印;第三行是先對(duì)成員變量s賦傳過(guò)來(lái)的參數(shù)s值后再打印,所以結(jié)果是HelloWorld!而第四行是主函數(shù)中直接打印類中的成員變量的值,也可以驗(yàn)證成員變量值的改變。
三.把自己當(dāng)作參數(shù)傳遞時(shí),也可以用this.(this作當(dāng)前參數(shù)進(jìn)行傳遞)
結(jié)果為:
HelloAA from A!
HelloAB from B!
HelloAA from A!
HelloAA from A!
HelloAB from B!
在這個(gè)例子中,對(duì)象A的構(gòu)造函數(shù)中,用new B(this)把對(duì)象A自己作為參數(shù)傳遞給了對(duì)象B的構(gòu)造函數(shù)。
四.當(dāng)在匿名類中用this時(shí),這個(gè)this則指的是匿名類或內(nèi)部類本身。
這時(shí)如果我們要使用外部類的方法和變量的話,則應(yīng)該加上外部類的類名。如:
在上面這個(gè)例子中,thread是一個(gè)匿名類對(duì)象,在它的定義中,它的run函數(shù)里用到了外部類的run函數(shù)。這時(shí)由于函數(shù)同名,直接調(diào)用就不行了。這時(shí)有兩種辦法,一種就是把外部的run函數(shù)換一個(gè)名字,但這種辦法對(duì)于一個(gè)開(kāi)發(fā)到中途的應(yīng)用來(lái)說(shuō)是不可取的。那么就可以用這個(gè)例子中的辦法用外部類的類名加上this引用來(lái)說(shuō)明要調(diào)用的是外部類的方法run。
五.在構(gòu)造函數(shù)中,通過(guò)this可以調(diào)用同一類中別的構(gòu)造函數(shù)。如:
為了更確切的說(shuō)明this用法,另外一個(gè)例子為:
結(jié)果為:this測(cè)試成功25
值得注意的是:
1:在構(gòu)造調(diào)用另一個(gè)構(gòu)造函數(shù),調(diào)用動(dòng)作必須置于最起始的位置。
2:不能在構(gòu)造函數(shù)以外的任何函數(shù)內(nèi)調(diào)用構(gòu)造函數(shù)。
3:在一個(gè)構(gòu)造函數(shù)內(nèi)只能調(diào)用一個(gè)構(gòu)造函數(shù)。這一點(diǎn)在第二個(gè)構(gòu)造方法內(nèi)可以看到,第一個(gè)this(str),第二個(gè)為this.age=age;
六.this同時(shí)傳遞多個(gè)參數(shù)
結(jié)果為:9 10
Java技術(shù)內(nèi)容
Java中this關(guān)鍵字是什么:http://www.ilovecolors.com.cn/tutorial_java_se/118.html
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“編程基礎(chǔ)分享:Java中this是什么意思”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743