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均可以省略,因此这里就不详细介绍了。

相关文章
相关标签/搜索