关键字的作用:
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.使用this关键子时,需要注意的是,调用的方法不可是静态方法(不含static),访问的变量不可是静态变量(不含static)。
2.使用this关键字的目的是,为了区分实例变量和局部变量名字一样的情况下,其他的时候基本可以省略。例如在有参无返的构造方法中,this关键字就是必不可少的,而在默认的缺省构造器中则可以不写。
3.在实例方法中调用构造方法,首先明确一点,只有实例方法才可以使用this();去调用其他构造方法