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