为什么把Java的this叫指针_java中this指针的作用?

一.

废话不多说,看代码:

我们定义一个Student类,用来测试,其中,Student中有两个成员变量:StuName(学生姓名),StuNo(学生学号)。

2f42264b89bbd76525bc65a332aa53f6.png

运行结果:

2dd22bc7998d5991d35948b692d8066a.png

1290009269281824768.htm

当我们把this指针加上。

1290009269281824768.htm22e9c12409928a6da33e33bad2177449.png

运行结果:

4ec9f423e62d3ae1a1ea67022a508f46.png

1290009269281824768.htm  这是什么意思呢?

当我们在一个类中写一个方法时,当传入的参数的参数名与该类的成员变量名相同,并且把参数赋值给与之同名的成员变量时(如图),

83c8496fe36c4e14b3b0645bb6053633.png

1290009269281824768.htm

此时编译器并不知道到底是参数赋值给成员变量,还是成员变量赋值给参数;所以就有了this指针的诞生;

当我们把this指针加上时(如图):

baca76b4f0f6423c59c224578aac958c.png

1290009269281824768.htm

这时编译器就会知道,是把传进来的参数赋值给成员变量。

二,

说到这里相信大家应该就明白了,那接下来我们来看看如果传入的参数的参数名不同时,会是怎样的? 来我们上代码:

1290009269281824768.htm

1290009269281824768.htm

18a5bd9f25c37843b7ca8b7f4c87856e.png

1290009269281824768.htm

运行结果:

1290009269281824768.htm4ec9f423e62d3ae1a1ea67022a508f46.png

加上this指针之后:

141540b97eabebc9699ec4dd61422d82.png

运行结果:

4ec9f423e62d3ae1a1ea67022a508f46.png

通过以上代码我们可以发现,当我们传入的参数的参数名不同时,并不会对结果造成影响,这又是什么情况呢?

原来因为编译器会隐示的给成员变量添加this指针,所以当参数不同时,照样可以运行了。

小伙伴们懂了吗?

不管懂不懂我也要废话几句。其实this指针其实就是一个类的对象,举个例子;如图,我们在Student类中添加一个方法交useThis(),并在方法里用this指针调用该类的其他方法;

f66de2d79ce2fd5c86cb5e0cbb29fea4.png

1290009269281824768.htm

运行结果:

8db3bba66caf893338ee288e0294ae26.png

这又是什么原因呢?

当我们用Student定义一个对象时,

20904e9f63097d2a1316648a981bb509.png

1290009269281824768.htm

如图中的s,此时s就会有一个属于自己的this指针,并指向他本身,在类的内部就可以用this指针(像一般的对象调用方法一样)调用类的方法。

三,

以上是我对this指针的一些理解,希望对你有帮助,当你理解了this指针之后,在之后学习其他语言都会遇到,到时候你就能轻松的理解这个东西了。

四,

若有异议,下方留言,我们一起讨论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值