體現:當成員變量和函數的局部變量重名時,可以使用this關鍵字來區別;在構造函數中調用其它構造函數
原理:
代表的是當前對象。
this就是所在函數的所屬對象的引用。
簡單說,哪個對象調用了this關鍵字所在的函數,this就代表哪個對象。
內存圖解:
說明:
- 程序執行到main函數時,main函數進入棧內存中的方法區,執行到Person p = new Person(“旺財”);時,在main方法區中創建一個Person類型的引用變量p
- 接著,在堆內存中創建一個Person類的實例,并初始化,然后調用構造函數,在棧內存中創建一個Person(String name)函數的方法區,對象一調用構造函數,構造函數的方法區中就會有一個this引用指向該對象
- 執行Person(String name)中的代碼,把this所指向的對象進行初始化,執行完成后,Person方法區出棧
- 給棧中main方法區中的p賦值,使之指向this所指向的對象
- 執行speak方法,speak方法進入方法區,打印的是this所指向對象的name和age
詳見 另一篇博客[java學習筆記]java語言核心----面向對象之構造函數 中的標題4:構造函數的相互調用
只要在本類中使用本類的對象,一般都使用this關鍵字
如:在Person類中增加一個比較年齡的方法
代碼:
class Person{ PRivate int age; private String name; //此處省略get和set方法 Person(String name, int age){ this.name = name; thia.age = age; } //判斷一個Person對象的年齡是否和調用此方法的對象的年齡相同 public boolean campare(Person p){ return this.getAge()==p.getAge(); }}
新聞熱點
疑難解答