首先,我们应该理解什么是成员变量和局部变量。
在java中,成员变量就是一个类中方法之外的变量,局部变量是方法内的变量。
例:
package test03.test02.test01;
public class demo1 {
int age;//成员变量
public void method() {
int age=10;//局部变量
System.out.println(age);
}
}
可以看到我们在类中的成员变量与局部变量重名了,因此最后打印得结果是10还是成员变量的默认值0呢?我们可以看一下:
package test03.test02.test01;
public class Demo {
public static void main(String[] args) {
demo1 a=new demo1();
a.method();
}
}
//输出结果为:10
结果为10,为什么?因为就近原则,在方法中需要输出的age和局部变量最近,因此此时调用的是局部变量里的age。
那这就麻烦了,我们要是想调用成员变量作为输出结果该怎么办呢?因此就不得不提到this关键字了,我们只需要在age前面加上this关键字就能成功输出成员变量的age了。
package test03.test02.test01;
public class demo1 {
int age;//成员变量
public void method() {
int age=10;//局部变量
System.out.println(this.age);//可以看到,这里加了this关键字
}
}
///
package test03.test02.test01;
public class Demo {
public static void main(String[] args) {
demo1 a=new demo1();
a.method();
}
}
最后输出结果为0。
总结:
在java中,当成员变量和局部变量同名时,采取就近原则引用。this关键字的作用是能直接引用成员变量。