背景
工作了这么多年了,我深刻的认识到,基础对于一个人来说是多么的重要,所以,我决定从基础开始为大家介绍Java。一方面帮助大家学习Java,另一方面我自己也夯实一下基础!
今天就先讲讲Java中的【This】关键字吧!
小例子
首先在一个类中写一个简单的小方法来实现【给其他人打招呼】的小功能
public class Person {
String name; //我自己的名字
//参数是对方的名字
//成员变量name是自己的名字
public void sayHello(String someone){
System.out.println(someone + ",您好。我是" + name);
}
再另外一个类中调用这个【Person】方法
public class Damo01Person {
public static void main(String[] args){
Person person = new Person();
//设置我自己的名字
person.name = "王一";
person.sayHello("张三");
}
}
运行,显示如下结果:
张三,您好。我是王一
这么一个小功能就实现了。可是如果我把参数的命名改成和成员变量的命名一样的名字呢?看下面代码:
public class Person {
String name; //我自己的名字
//参数是对方的名字
//成员变量name是自己的名字
public void sayHello(String name){
System.out.println(name + ",您好。我是" + name);
}
这种情况下,IDE是不会报错的。但是运行一下呢?会显示什么结果:
张三,您好。我是张三
显然,这样的结果不是我们想要的。那么在这种【参数名称和成员变量名称一致】的情况下,怎么才能实现我们想要的功能呢?这就用到了【This】关键字。
看我做如下修改:
public class Person {
String name; //我自己的名字
//参数是对方的名字
//成员变量name是自己的名字
public void sayHello(String name){
System.out.println(name + ",您好。我是" + this.name);
}
此时会显示什么结果呢?(嘿嘿!试一下你就知道)
张三,您好。我是王一
这就OK了,使用【This】关键字,在这种特使的情况下我们也能实现我们想要的功能。
This关键字的作用
区分重名 :比如参数与成员变量重名了,可以使用This来区分这两个相同的名称。【This】英文意思是【这个】,在这个小例子中【This.name】可以理解为【对象.方法】