this 关键字

Posted by t298 on June 9, 2020

this:总是指向调用该方法的对象。

根据this出现的位置不同:

  1. 引用成员变量

    1
    2
    3
    4
    5
    6
    
    public class Student{
        String name; //定义一个成员变量 name
        private void SetName(String name){ //定义一个参数(局部变量)name
            this.name=name; //局部变量的值的传递给成员变量
        }
    }
    

    虽然我们是可以看懂上面代码的含义,但是作为java编译器是怎么判断的呢?到底是形参的值传递给成员变量name,还是将成员变量name的值传递给形参的name?也就是说,两个变量名如果相同的话,就要使用this了。也就是说,在某个变量前面加上一个this,就指的是这个对象的成员变量或者放方法,而不是指成员方法的形式参数或者局部变量。代码this.name = name就是将形式参数的值传递给成员变量。this.name 就等于 Student.name

  2. 调用类的构造方法

    1
    2
    3
    4
    5
    6
    7
    8
    
    public class Student{
        public Student(){//构造方法
            this("Hello!");
        }
        public Student(String name){//带形参的构造方法
               
        }
        }
    

    上面代码中的 this("Hello!")就代表类中的构造方法。如果有多个构造方法的话,会根据参数的数量来判断.

    注意:利用this关键字来调用构造方法,只有在无参数构造方法中第一句使用this调用有参的构造方法。

  3. 返回对象的值

    在代码中可以使用return this来返回某个类的引用,此时,这个this就代表类名。

  4. 当该方法需要一个该类的对象做参数的时候,可以使用this代替。
  5. 如果想使用外部类的对象,可以使用外部类名.this的形式表示外部类的对象的引用。