关键字的作用:
1.this可以访问类本身中的属性。
2.this可以调用类本身中的方法。
3.this可以调用本类中其他的构造方法。
上一段代码可以使得概念更为清楚:
输出结果:
可以发现,我们在用对象的引用P去调用Person类中的Sayhello方法,并且传参为"456",然后后面的name输出的值,是由P.name = “123”;早就定义好的,这个没什么问题。但是在很多实际开发过程中,为了代码的可读性高,一般都是建议成员变量和局部变量的名字是一致的,所以如果我们把代码中局部变量和成员变量都修改成一个名字,会出现什么样的情况呢?
当局部变量和成员变量的名字是一致的情况下
打印结果:
我们可以会发现一个有趣的现象,打印的结果不是456123,而是456456。那就很奇怪了,那我之前用
P.name = “123”;的值跑到哪里去了呢?我想把123这个值给打印出来,怎么做呢?那么this关键字就派上用场了
加入this关键字
我们可以发现,当局部变量名和成员变量名都为一致的情况下,加了this关键字以后,四个位置的名字颜色都会一致。不加的话,只有方法内的name,还有打印()内的两个name,这三个会显示一致(图略)
然后我们开始输出打印结果:
可以看到此时打印出来的值,正是在main方法里面,我通过"引用.属性"的方式,对name这个变量赋的值123。那么也就意味着this.name等同于 P.name,使用this这个关键字的目的就是为了当局部变量和成员变量的名字是一样的时候,我想要打印我想要的值,换句话说,也就是我想输出由调用方法时传过来的值就打印这个,而我想要答应本类中已经赋值的属性的值,那我通过this关键字来指定获得这个成员变量的值。
总结:
1.当方法的局部变量和类的成员变量重名时,根据就近原则,优先使用局部变量那么也就是说,你在调用某个方法的时候,那么形参接受到值后,后面打印这个重名变量时,会优先使用形参获得的值。
2.在main方法下,通过对象访问了类中的属性,并赋值为a,该方法中使用this关键字,那么打印"this.重名的变量名",获得的值为a;如果有没有访问类中属性,且没有赋值,打印出来的则是属性的默认值。