第一,你要明白为什么Java要提供this关键字(使用场合)
this关键字第一种应用场合是,解决局部变量隐藏成员变量的问题,具体看下面代码
- /*
- *[this关键字的第一种用法]:解决了局部变量隐藏成员变量的问题(前提是同名)
- */
- class DemoThis {
- public static void main(String[] args) {
- }
- }
- //创建一个类Student
- class Student {
- //成员变量(事物的属性)
- String name; //学生有姓名吧
- String grade; //学生分班级吧
- //...
- //无参构造器和有参构造器
- public Student(){}
- /*
- *第一种情况,如果形参(局部变量)不和成员变量name同名
- *这种情况少,因为变量名建议"见名知意",n和g很明显看不出什么意思
- */
- public Student(String n,String g){
- name = n;
- grade = g;
- }
- /*
- *第二种情况,如果局部变量和成员变量同名了
- *就会出现局部变量变量把成员变量的"隐藏"了
- *因为Java会采用就近原则,访问最近的变量
- */
- public void set(String name,String grade){
- name = name;
- grade = grade;
- //这样写,能按照我们预期的想给Student类对象的name属性和grade属性赋值?
- //这里,不能实现,因为局部变量name和grade会给自己赋值
- }
- }
复制代码
this的第二种应用场景,就是调用本类的构造方法
第二,你要明白为this是什么
this其实就是一个地址,那个对象调用this所在的方法,this就代表那个对象,也可以说this是该对象的引用
第三,你要知道什么时候this可以省略
在第一种情况,只要保证不出现同名变量,就无需显式在变量前面加上this.
在第二种情况,系统默认即可 |