this关键字
一:this关键字的作用
*当方法的局部变量和类的变量名重名时,在不使用this的情况下会有什么结果?
Person
String name;//定义当前Person名字
//参数name是目标名字
//成员变量name是自己名字
public void sayHello(String name) {
System.out.println(name+",你好。我是"+name);
}
Demo01Person
public static void main(String[] args) {
Person person = new Person();
//设置当前person名字
person.name = "王健林";
//调用sayHello方法
person.sayHello("王思聪");
}
运行结果:王思聪,你好。我是王思聪
总结:根据“就近原则”,优先使用局部变量。
*当方法的局部变量和类的变量名重名时,使用this的情况下会有什么结果?
Person {
String name;//定义当前Person名字
//参数name是目标名字
//成员变量name是自己名字
public void sayHello(String name) {
System.out.println(name+",你好。我是"+this.name);
}
Demo01Person {
public static void main(String[] args) {
Person person = new Person();
//设置当前person名字
person.name = "王健林";
//调用sayHello方法
person.sayHello("王思聪");
}
运行结果:王思聪,你好。我是王健林
总结:当我们使用this.成员变量名时,就可以访问本类当中的成员变量。
由此我们可以总结出:使用this关键字可以准确的进行属性的标记
二:this关键字的原理
*跟着上面的代码 我们打印一下person和方法中的this的地址
Person {
String name;//定义当前Person名字
//参数name是目标名字
//成员变量name是自己名字
public void sayHello(String name) {
System.out.println(this);
}
Demo01Person {
public static void main(String[] args) {
Person person = new Person();
//设置当前person名字
person.name = "王健林";
//调用sayHello方法
person.sayHello("王思聪");
System.out.println(person);
}
打印结果:demo01.Person@7852e922 demo01.Person@7852e922
从结果我们可以看出,person和方法中this的地址是一样的。
由此我们可以总结出:通过谁调用的方法,谁就是this