Java裡this的用法

來源:互聯網
上載者:User

標籤:

       this, 一個官方的說法是,this.首先是一個對象,它代表調用這個函數的對象。
       在不會產生混淆的地方 this.是可以省略的,但一般都會加上,例如,下面的程式中,類"Person"裡面加與不加 this 編譯運行後的結果是一樣的:

 1 package testThis; 2  3 public class Test { 4     public static void main(String args[]){ 5         Person p1 = new Person(); 6         p1.name = "zhangsan"; 7         Person p2 = new Person(); 8         p2.name = "lisi"; 9         10         p1.talk();11         p2.talk();12     }13 }14 15 class Person{16     String name;17     void talk(){18         System.out.println("My name is " + this.name);19     }20 }

 上面的代碼裡第18行,不管是"this.name"還是"name",啟動並執行結果都是

My name is zhangsan
My name is lisi

 

但是,當函數裡面有參數時,如果函數的參數和成員變數一樣,這時不加this的話,程式就會根據"就近原則",自動調用最近的值,如下面的代碼:   上面已經把對象p1和p2裡面的變數name分別賦值為"zhangsan"和"lisi",但類"Person"裡面的方法"talk"現在有了參數"String name",而且沒有加"this",這時如果運行這個方法,方法就會接收後面參數傳送給它的值,分別是"zhang"和"li",這時運行結果就會是:

My name is zhang
My name is li

所以,這裡雖然對象p1和p2各有自己的變數 name,但它們調用的方法接收的卻是參數裡面的值,(從系統裡各變數的顏色背景也可心看出對應的變數),而不是它們自己本身的值.所以這裡輸出的結果跟它們自己內部的值無關.

如果想要在它們各自調用talk()方法時分別輸出自己內部的值,則需要在類 "Person"裡面的方法"talk"裡加上"this",這樣,當它們各自調用這個方法時,輸出的結果都是它們各自內部變數的值了:

 

 

Java裡this的用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.