Java中this关键字

Java中this关键字,先看一张图片
在这里插入图片描述
我们创建了两个Father类father,father1两个实例化对象,并通过调用display()方法输出this,我们发现,两次this关键字的值和实例化对象在堆内存的首地址值一样,所以this关键字存储的可以认为是一个指针,它是对对象的一个引用。所以在类的构造方法对对象进行初始化的过程中,为了避免构造函数的形参名和成员变量名一样导致在创建对象进行初始化赋值失败,我们使用this关键字区别成员变量和形参。
在这里插入图片描述
如果在有参构造方法中的形参和成员变量名字一样,在控制台输出为null,因为在高亮中我们看到,形参name和方法体里的name三个高亮,而成员变量name并没有高亮。导致构造方法赋值失败。而编译器警告内容为 The assignment to variable name has no effect 意思为对变量名的赋值无效。执行过程中,把构造方法里面的形参name和方法体里面的name = name三个name为一个name,所以成员变量初始化失败。加上this就初始化成功。在这里插入图片描述
加上this关键字之后,this.name就被认为是Father里面的成员变量赋值也就成功了。
在这里插入图片描述
成员方法display()中加入this.print();成功执行print(),此时this指向的就是Father方法,所以this.print();等价于Father.print();
但是因为print()和display()方法名并不相同,不会像上面构造方法中形参和成员变量名字一样导致初始化失败。所以这个this省去不写,编译过程依然能够识别并顺利执行。
综上,我们可以把this关键字当作指向实例化对象的指针。实际上在前面我们可以看到,this里面的内容和实例化对象的地址是一样,所以把this关键字当作指针,其他问题就很容易明白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值