Java中的 this 关键字是什么意思? this() 又是什么?

问题

问题一:什么是this关键字?

定义:this 代表当前对象。这个定义比较抽象,举例来回答。
思考一个问题:如果没有 this 会怎样? 如图:如果没有 this,那么在通过方法对类成员变量赋值时,左边的变量我们以为是成员变量,但实际上却是局部变量,成员变量并没有发生改变,编译器会根据就近原则,把左边的 year 当成传递进来的参数,“我给我自己赋值”,相当于我给我自己发工资,显然不太合理。在这里插入图片描述

而 this 关键字就表明,你传递进来的参数是给哪个对象里面的成员变量进行赋值的,如图:this 引用其实被编译器隐藏起来了,对象 d1 调用了这个方法,这个this就代表了d1这个对象,指名道姓地给这个 d1 里面的变量赋值,这样编译器就知道你传入的参数是给 d1 的了。
在这里插入图片描述

注:this 只能在成员方法中使用(在其他地方也使用不了)


问题二:什么是this()?

this() 可以在类的构造方法中调用该类的其他的构造方法。

为什么要有 this() ?它有啥用?
打个比方,比如说顺序表这个数据结构,当我们 new ArrayList 的时候,并没有传参,但仔细想一想,我们都没给他顺序表的长度,它怎么能构造出顺序表的呢?
this() 就可以搞定,ArrayList 完全可以在无参构造方法中调用 this(),让它去调用其他有参构造方法,简单来说就是创造者为了让我们傻瓜式使用这些类,他在内部中帮我们自动初始化顺序表大小、自动扩容等等操作,而我们不必费心去了解其内部结构,只需要简单的一步就能够使用顺序表这一数据结构。(虽然实际上 ArrayList 并不是这么实现的,这里只是用最熟悉的数据结构来打个比方,用 this() 也是可以完成的)

注:this() 的优先级是最高的,需要在构造方法中放在第一执行位上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行舟Yi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值