this關(guān)鍵字
一、了解this用處
this:在程序里面,使用this可以訪問本類中的屬性,方法,表示出當(dāng)前對(duì)象
1.使用this訪問屬性
但是以上的程序里面有一點(diǎn)不是很好,在構(gòu)造方法上
構(gòu)造方法的主要目的是為了類之中的name,age兩個(gè)屬性初始化,但是構(gòu)造方法里面參數(shù)的名字并不清楚。既然目的是為屬性傳遞數(shù)據(jù),那么最好將參數(shù)名稱和屬性名稱保持一致
改造如下:
如果按照此類的方式修改,發(fā)現(xiàn)name和age兩個(gè)屬性的并沒有內(nèi)容。因?yàn)樵跇?gòu)造方法里面操作的name和age和類之中的屬性無關(guān),只與構(gòu)造方法的參數(shù)有關(guān)(以{}為查找范圍);
所有的程序都以{}作為邊界,所有的取用都是以就近取用,若按照此道理來講,以上所操作的name和age實(shí)際上只是構(gòu)造方法里面的兩個(gè)參數(shù)而已。所以現(xiàn)在要想明確的指定出訪問的是屬性則在屬性訪問前加上一個(gè)this,使用this.屬性的方式進(jìn)行訪問
最終改造如下:
結(jié)論一:以后所以編寫的程序,都必須使用this訪問本類屬性。
2.this調(diào)用構(gòu)造方法
如果要強(qiáng)調(diào)方法,在一個(gè)類之中應(yīng)該有兩類方法:普通方法和構(gòu)造方法。如果調(diào)用本類中的普通方法,則建議在方法前加“this”,使用“this.方法()”調(diào)用,但是在使用this的過程中還可以利用其實(shí)現(xiàn)構(gòu)造方法的互調(diào)用
構(gòu)造方法是在使用關(guān)鍵字new實(shí)例化類對(duì)象的時(shí)候使用到的,但是利用this()可以實(shí)現(xiàn)構(gòu)造方法間的互調(diào)用操作
例子:
此時(shí)的構(gòu)造方法已經(jīng)成功實(shí)現(xiàn)了互調(diào)操作,但是在使用this調(diào)用構(gòu)造方法的時(shí)也有一些限制:
1)使用this調(diào)用構(gòu)造方法時(shí)必須放在構(gòu)造方法的首行
2)在使用this()進(jìn)行構(gòu)造方法互相調(diào)用時(shí),請(qǐng)至少保證留下一個(gè)出口。
即:不使用this調(diào)用其他構(gòu)造;
3.this表示當(dāng)前對(duì)象(開頭)
所謂的當(dāng)前對(duì)象嚴(yán)格來講指的就是當(dāng)前調(diào)用本類方法的對(duì)象;
例子:
輸出結(jié)果:
4.引用傳遞分析(重點(diǎn))
范例一:
Fun(p);就相當(dāng)于Person temp=Person;
這段程序使用了引用傳遞,在方法中只需要接收Demo類對(duì)象,就表示兩個(gè)棧內(nèi)存指向同一塊堆內(nèi)存空間,所做的修改一定可以保留下來;
范例二:
本題目解釋只有一句話:字符串的內(nèi)容一旦聲明則不可改變;
本程序?qū)儆谝粋€(gè)數(shù)值關(guān)系,傳遞到方法里面的數(shù)據(jù)就相當(dāng)于一個(gè)數(shù)據(jù)的拷貝,至于方法里面如何修改與之前無關(guān);方法的參數(shù)在執(zhí)行完之后消失
對(duì)于String數(shù)據(jù)類型由于其本身的特性所決定的操作模式(不可改變的模式)那么如果覺得堆棧關(guān)系過于難以理解,就按照基本類型的方式理解;
范例三:
此范例和第一范例是一樣的,String是一個(gè)引用數(shù)據(jù)類型,需要有堆棧關(guān)系
總結(jié):this關(guān)鍵字
1)使用“this.屬性”表示本類屬性,而且在日后所有編寫代碼中,都要求寫上“this”
2)使用“this.方法()”可以調(diào)用本類普通方法;
3)使用“this()”表示調(diào)用本類構(gòu)造方法,而且此代碼要求放在構(gòu)造方法的首行,并且多個(gè)構(gòu)造之間不允許循環(huán)調(diào)用(留有出口);
4)This表示當(dāng)前對(duì)象:當(dāng)前正在調(diào)用本類中方法的對(duì)象;
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注