深刻理解this关键字

 

this是什么?算法

在Java语言中,当建立一个对象后,Java虚拟机就会为其分配一个指向对象自己的指针,这个指针就是“this”。this

this关键字有哪些用法?spa

1、调用本类的成员变量指针

class Person{
    private String name;

    public Person(String name){
        this.name = name;
    }
}

上述代码中,构造方法中的形参与Person类的成员变量名称相同,若是不使用this关键字,不说咱们,编译器也没法辨识出是将形参name赋给成员变量仍是将成员变量name赋给形参,code

因此this关键字能够指明参数是该类的成员变量,即this.name = name表示的是将形参name赋给成员变量name。对象

2、调用构造方法blog

class Person{
    private String name;
    private String sex;

    public Person(String name){
        this.name = name;
    }

    public Person(String name,String sex){
        this(name);
        this.name = name;
    }
}

当一个类中有多个含有不一样参数的构造方法时,可使用this调用其余的构造方法,而只要传入合适的参数便可。递归

固然这种this调用方式也有必定的限制get

(1)使用this调用其余构造方法是必须放在该构造方法的第一行编译器

(2)当类中有多个构造器使用this互相调用时,必须有一个构造器是不使用this调用其余构造器的,不然将形成互相调用的死循环,相似于递归算法,固然这种写法编译器也不会经过。

(3)在一个构造方法中只能调用一次

3、调用自身对象

public class Keyword_this {

    public static void main(String[] args){
        Person person1 = new Person("苹果大大个");
        person1.getInfo();
        System.out.println("我是谁=====>" + person1);
    }

}

class Person{
    private String name;

    public Person(String name){
        this.name = name;
    }

    public void getInfo(){
        System.out.println("我是谁=====>" + this);
    }
}

运行结果:

我是谁=====>test.base.Person@4554617c
我是谁=====>test.base.Person@4554617c

根据结果显示,main方法中直接打印出来的对象与getInfo方法中打印的this对象是同一个,也就是说this对方法来讲就是调用方法的那个对象。

相关文章
相关标签/搜索