Java this关键字
生活随笔
收集整理的這篇文章主要介紹了
Java this关键字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
this 關鍵字有三個應用:
1.this調用本類中的屬性,也就是類中的成員變量
2.this調用本類中的其他方法
3.this調用本類中的其他構造方法,調用時要放在構造方法的首行
來看下面這段代碼: public String name;public void showName(String name) {System.out.println(name); }
1.this調用本類中的屬性,也就是類中的成員變量
2.this調用本類中的其他方法
3.this調用本類中的其他構造方法,調用時要放在構造方法的首行
來看下面這段代碼: public String name;public void showName(String name) {System.out.println(name); }
上面的代碼中有個叫name的成員變量,也有個同樣叫name的方法參數。那么showName方法會輸出參數的name還是成員變量name呢?
測試代碼:
Foo foo = new Foo(); foo.name = "張三"; foo.showName("李四");運行結果:
李四運行結果顯示答案是會輸出參數的name,原因是Java語法獲取變量的時候采取的是就近原則所以name代表的是離它最近的參數name。如果想要輸出成員變量name怎么辦,把參數名name改了嗎?那又得多想一個變量名多麻煩啊。還好Java提供了this關鍵字可以引用類的對象。
把上面的代碼改成:
運行結果:
我是方法參數:李四 我是類的屬性:張三可以看出this關鍵字代表調用改方法的對象,此時相當于對象foo。
再來看一個例子。
public Foo returnThis() {return this; }public Foo getInstance() {return new Foo(); }測試代碼:
Foo foo = new Foo();Foo foo2 = foo.returnThis(); Foo foo3 = foo.getInstance(); System.out.println("foo和foo2是同一對象嗎? --> " + (foo == foo2)); System.out.println("foo和foo3是同一對象嗎? --> " + (foo == foo3));運行結果:
foo和foo2是同一對象嗎? --> true foo和foo3是同一對象嗎? --> false這個例子很明確的說明了“this關鍵字代表調用改方法的對象”,該例子中return this返回的是調用該方法的對象也就是foo,所以foo2和foo指向的是同一對象。而 new Foo是創建一個新的Foo對象。所以foo3和foo并不指向同一對象。
?
轉載于:https://www.cnblogs.com/Zombie-Xian/p/6245543.html
總結
以上是生活随笔為你收集整理的Java this关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [剑指offer][JAVA]面试题第[
- 下一篇: Java学习笔记8-1——汇编语言入门