在java中如何用this区分成员和局部变量,图片详解

BSO 2020-09-03 09:10:24 java常见问答 6314

在科学技术和经济水平发展日新月异的今天,掌握一门新技术对于每个人来说都是十分重要的。今天主要为大家介绍一下,在java中如何用this区分成员变量和局部变量,并通过具体的图片详细解析。

首先,1.在java中有一个问题,如何处理就近原则:

java中类实现了封装并通过private对成员变量进行了私有化。但是又有新的问题。如图所示:

用this区分成员变量和局部变量

上面是创建了一个person类,并定义了两个私有的成员变量name和age还有一个speak()方法。但是要注意到方法speak()中也有两个局部变量name和age这就造成两个变量和成员变量重名的结果了。

2.局部变量和成员变量重名会产生矛盾:

根据java中的就近原则,speak()方法中打印出来的name和age就是上面的“哈哈”和“16”。就算外类通过set方法赋值,打印出来的依旧是方法中局部变量赋的值。这就是java中的就近原则。

3.解决矛盾:让speak()方法打印成员变量赋的值:

这种情况下就可以使用this关键字,this关键字的作用就是用来区分成员变量和局部变量的。

使用方法:this.变量。就代表成员变量。图片如下:

用this区分成员变量和局部变量

上图可以表示,加上this关键字就表示成员变量了。

4.this内存图如下所示:

用this区分成员变量和局部变量

从上图可以看出this是本类对象的引用,谁调用,this就隶属那个对象,而对象是堆内存地址,this也就变成了堆内存首地址。成员变量在堆内存中因此this也就成为了指向成员变量的对象。可以通过上图加以理解。

5.set方法的变化理解,图片如下:

4.png

这是set方法,里面有个形参age就相当于该方法有一个局部变量age,也和成员变量发生了冲突。如果按图中赋值,根据就近原则只是将值赋给了自己。我们需要解决这个问题。同样也是通过this的方法进行解决的。如图所示:

用this区分成员变量和局部变量

6.this关键字的调用者,类比年龄案例

如图所示:

用this区分成员变量和局部变量

由上可以看出,谁调用了this,this就指向了谁。

上文就是有关在java中如何用this区分成员和局部变量的内容,并通过图片详细展现了解决各类问题的办法。想要了解更多java基础,敬请关注奇 Q工具网。

推荐阅读:

java super关键字,super访问父类成员详解

java super关键字,super调用父类构造方法详解

java继承(extends),单继承简单介绍