JAVA中this的三種用法的詳解

  this關鍵字必須放在非靜態方法裏面this

this關鍵字表明自身,在程序中主要的使用用途有如下幾個方面:對象

   使用this關鍵字引用成員變量作用域

   使用this關鍵字在自身構造方法內部引用其它構造方法get

  使用this關鍵字表明自身類的對象class

  使用this關鍵字引用成員方法test

1 引用成員變量變量

  在一個類的方法或構造方法內部,可使用「this.成員變量名」這樣的格式來引用成員變量名,有些時候能夠省略,有些時候不能省略。首先看一下下面的代碼:引用

  /**程序

  * 使用this引用成員變量方法

  */

  public class ReferenceVariable {

    private int a;

    public ReferenceVariable(int a){

      this.a = a;

    }

 

    public int getA(){

      return a;

    }

 

    public void setA(int a){

      this.a = a;

    }

  }

    在該代碼的構造方法和setA方法內部,都是用this.a引用類的成員變量。由於不管在構造方法仍是setA方法內部,都包含2個變量名爲a的變量,一個是參數a,另一個是成員變量a。按照Java語言的變量做用範圍規定,參數a的做用範圍爲構造方法或方法內部,    成員變量a的做用範圍是類的內部,這樣在構造方法和setA方法內部就存在了變量a的衝突,Java語言規定當變量做用範圍重疊時,做用域小的變量覆蓋做用域大的變量。因此在構造方法和setA方法內部,參數a起做用。

    這樣須要訪問成員變量a則必須使用this進行引用。固然,若是變量名不發生重疊,則this能夠省略。

    可是爲了加強代碼的可讀性,通常將參數的名稱和成員變量的名稱保持一致,因此this的使用頻率在規範的代碼內部應該不少。

 

2 引用構造方法

  在一個類的構造方法內部,也可使用this關鍵字引用其它的構造方法,這樣能夠下降代碼的重複,也可使全部的構造方法保持統一,這樣方便之後的代碼修改和維護,也方便代碼的閱讀。

  下面是一個簡單的示例:

  /**

  * 使用this關鍵字引用構造方法

  */

  public class ReferenceConstructor {

    int a;

 

    public ReferenceConstructor(){

      this(0);

    }

 

    public ReferenceConstructor(int a){

      this.a = a;

    }

  }

  這裏在不帶參數的構造方法內部,使用this調用了另一個構造方法,其中0是根據須要傳遞的參數的值,當一個類內部的構造方法比較多時,能夠只書寫一個構造方法的內部功能代碼,而後其它的構造方法都經過調用該構造方法實現,這樣既保證了全部的構造是統一的,也下降了代碼的重複。

  在實際使用時,須要注意的是,在構造方法內部使用this關鍵字調用其它的構造方法時,調用的代碼只能出如今構造方法內部的第一行可執行代碼。這樣,在構造方法內部使用this關鍵字調用構造方法最多會出現一次。

3 表明自身對象

  在一個類的內部,也可使用this表明自身類的對象,或者換句話說,每一個類內部都有一個隱含的成員變量,該成員變量的類型是該類的類型,該成員變量的名稱是this,實際使用this表明自身類的對象的示例代碼以下:

  /**

  * 使用this表明自身類的對象

  */

  public class ReferenceObject {

    ReferenceObject instance;

 

    public ReferenceObject(){

      instance = this;

    }

 

    public void test(){

      System.out.println(this);

    }

  }

  在構造方法內部,將對象this的值賦值給instance,在test方法內部,輸出對象this的內容,這裏的this都表明自身類型的對象。

4 引用成員方法

  在一個類的內部,成員方法之間的互相調用時也可使用「this.方法名(參數)」來進行引用,只是全部這樣的引用中this均可以省略,因此這裏就不詳細介紹了。

相關文章
相關標籤/搜索