一个初学者对Java中this关键字的理解

此文章仅表明我的想法,若是您发现文章中有错误或者其余问题,请在评论区指出,不胜感激this

对于初学者来讲,this关键字通常来讲有三种应用:spa

一:(访问成员变量)对象

  经过this关键字能够明确的访问一个类的成员变量,解决了与局部变量名称冲突的问题。blog

class Person虚拟机

{编译

  int age;class

  //定义一个无参的构造方法变量

  //我忘了从哪本书上看的,上边说在类中最好都定义一个无参的构造方法,具体缘由若是哪位大神理解请在评论中解答,谢谢程序

  public Person(){}方法

  //定义一个带一个形参的构造方法

  public Person(int age)

  {

    this.age=age;

  }

}

  这是一段最基本的代码,带形参的构造方法的参数被定义为age,这是一个局部变量,此外在类中还定义了一个成员变量,也叫age。两个变量名字相同,Java虚拟机在编译过程当中如何判断该使用哪一个变量?这个时候this关键字就起做用了。代码中this.age表明的是成员变量,也叫对象属性,而age表明的是局部变量。也就是说,在构造方法中使用“this.age”访问的是成员变量,而使用“age”则是访问局部变量。代码this.age=age;其实就是将局部变量(形参)的值赋给了成员变量。

二:(调用成员方法)

  经过this关键字能够调用成员方法。

class Person

{

  public void speak()

  {

    System.out.println("我是一我的");

  }

  public void introduce()

  {

    this.speak();

    System.out.println("我是一个好人");

  }

}

  在introduce()方法中调用speak()方法,使用了this关键字。不过,此处的this能够省略不写。也就是说“this.speak();”和“speak();”的效果是彻底同样的。这个不须要过多介绍。

三:(调用构造方法)

  构造方法是在建立对象的时候被Java虚拟机自动调用的,在程序中不能像其余自定义方法那样被调用。可是在构造方法中可使用this(参数1,参数2......)的形式来调用其余的构造方法。

这段代码的运行结果以下:

  也就是说,在实例化Person对象时,调用了有参的构造方法,又在该方法中经过“this();”调用了无参的构造方法。所以运行结果显示两个构造方法。

  可是,在使用this调用类的构造方法时,应该注意三点:

  一、只能在构造方法中调用构造方法,不能在成员方法中调用。

  二、在构造方法中,使用this调用构造方法的语句必须位于第一行,并且只能出现一次

  public Person()

  {

    int age=18;

    this(age); //在无参的构造方法中调用有参的构造方法,可是不在第一行,编译错误。

  }

  三、不能在一个类的两个构造方法中使用this互相调用

  class Person

  {

    //定义无参的构造方法

    public Person()

    {

      this(18);//调用有参的构造方法

    }

    //定义有参的构造方法

    public Person(int age)

    {

      this();//调用无参的构造方法

    }

    //这段代码中因为有参的构造方法和无参的构造方法相互调用了,因此编译会报错!

  }

 

此次就写这么多吧,欢迎大神来指点!

相关文章
相关标签/搜索