java中的this关键字

来源:互联网 发布:iphone8知乎 编辑:程序博客网 时间:2024/06/05 19:02

当成员变量和局部变量重名时,可以采用this关键字来进行区分。
this
指所在函数所属对象的引用,
通俗的将就是:那个对象调用了this所在的函数,this就代表那个对象
eg:

class Person{    int age;    String name;    Person(int age)    {        this.age=age;    }    Person(int age,String name)    {        this(age);        this.name=name;    }    void speak()    {        System.out.println("name="+name+"\nage="+age);    }}class Demo{    public static void main(String args)    {        Person p=new Person(18,"旺财");    }}

程序的执行流程如下:
第一步:

1.执行主函数,主函数进入栈,
执行Person p=new Person(18,”旺财”);语句。
为对象 p 在堆中分配空间进行默认初始化。

name=null;
age=0;
2.对象 p 调用构造函数

(前面说过this的作用:那个对象调用他,他就指向那个对象)
所以this指向了p的地址。
即:
this->0x0034 (此时this等价于对象p)

开始执行构造函数的函数体
执行this(age),构造函数Person(age)入栈
因为this()被构造函数Person(name,age)调用,构造函数被对象调用。
所以,此时的this仍然指向对象p (this->0x0034)

执行构造函数体:
this.age=age; //p.age=18;
3. 构造函数Person(age)执行完毕。弹栈。

执行 this.name=name; //p.name=”旺财”
构造函数Person(name,age)执行完毕,进行弹栈。对象初始化完毕。

p指向地址0x0034。

原创粉丝点击