当两个变量不同名时,就非常好办啦,如下面打招呼的例子
成员变量name。局部变量who
package cn.itcast.day0601.demo03;
public class Demo01Person {
String name;//我自己的名字
public void sayHello(String who){
System.out.println(who+"你好,我是"+name);
}
}
创建对象调用它:
package cn.itcast.day0601.demo03;
public class Demo01UsePerson {
public static void main(String[] args) {
Demo01Person person = new Demo01Person();
person.name = "小明";
person.sayHello("小丽");
}
}
调用结果:
当他们同名时,如果你没有用this,则会采用就近原则。会优先使用局部变量。
我来把上面例子改同名:
package cn.itcast.day0601.demo03;
public class Demo01Person {
String name;//我自己的名字
public void sayHello(String name){
System.out.println(name+"你好,我是"+name);
}
}
此时调用:
package cn.itcast.day0601.demo03;
public class Demo01UsePerson {
public static void main(String[] args) {
Demo01Person person = new Demo01Person();
person.name = "小明";
person.sayHello("小丽");
}
}
是不是很尴尬。因此当我们不小心同名时,为了避免尴尬。我们既要用访问本类中的成员变量,又要访问方法中的局部变量。那我们访问成员变量时,就要使用格式:this.成员变量名。
package cn.itcast.day0601.demo03;
public class Demo01Person {
String name;//我自己的名字
public void sayHello(String name){
System.out.println(name+"你好,我是"+this.name);
}
}
调用:
package cn.itcast.day0601.demo03;
public class Demo01UsePerson {
public static void main(String[] args) {
Demo01Person person = new Demo01Person();
person.name = "小明";
person.sayHello("小丽");
}
}
结果如下:
好啦,知道怎么用后,我们来说说这个this到底指的是啥呢?
简单来记:通过谁调用的方法,谁就是this。如上面例子:
person.sayHello();person对象调用的,因此this指的就是person。
下面来验证,就是看他们地址是否一样:
package cn.itcast.day0601.demo03;
public class Demo01Person {
String name;//我自己的名字
public void sayHello(String name){
System.out.println(name+"你好,我是"+this.name);
System.out.println(this);
}
}
package cn.itcast.day0601.demo03;
public class Demo01UsePerson {
public static void main(String[] args) {
Demo01Person person = new Demo01Person();
person.name = "小明";
person.sayHello("小丽");
System.out.println(person);
}
}
看下图,地址一样ba~
学习使我快乐~
午饭午饭我来了
谢谢你们的支持