Java this关键字
1.this調(diào)用本類中的屬性,也就是類中的成員變量
2.this調(diào)用本類中的其他方法
3.this調(diào)用本類中的其他構(gòu)造方法,調(diào)用時(shí)要放在構(gòu)造方法的首行
來看下面這段代碼: public String name;public void showName(String name) {System.out.println(name); }
上面的代碼中有個(gè)叫name的成員變量,也有個(gè)同樣叫name的方法參數(shù)。那么showName方法會輸出參數(shù)的name還是成員變量name呢?
測試代碼:
Foo foo = new Foo(); foo.name = "張三"; foo.showName("李四");運(yùn)行結(jié)果:
李四運(yùn)行結(jié)果顯示答案是會輸出參數(shù)的name,原因是Java語法獲取變量的時(shí)候采取的是就近原則所以name代表的是離它最近的參數(shù)name。如果想要輸出成員變量name怎么辦,把參數(shù)名name改了嗎?那又得多想一個(gè)變量名多麻煩啊。還好Java提供了this關(guān)鍵字可以引用類的對象。
把上面的代碼改成:
運(yùn)行結(jié)果:
我是方法參數(shù):李四 我是類的屬性:張三可以看出this關(guān)鍵字代表調(diào)用改方法的對象,此時(shí)相當(dāng)于對象foo。
再來看一個(gè)例子。
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));運(yùn)行結(jié)果:
foo和foo2是同一對象嗎? --> true foo和foo3是同一對象嗎? --> false這個(gè)例子很明確的說明了“this關(guān)鍵字代表調(diào)用改方法的對象”,該例子中return this返回的是調(diào)用該方法的對象也就是foo,所以foo2和foo指向的是同一對象。而 new Foo是創(chuàng)建一個(gè)新的Foo對象。所以foo3和foo并不指向同一對象。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Zombie-Xian/p/6245543.html
總結(jié)
以上是生活随笔為你收集整理的Java this关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [剑指offer][JAVA]面试题第[
- 下一篇: matlab轴向柱塞泵动力学仿真,基于A