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