在类中this主要有两种用法,this表示在类中调用成员函数或者成员变量的类对象,为了区分调用成员函数还是成员变量,需要用到this,比如建一个Person的类,含成员变量 name,age,address;含成员函数talk();
class Person{
String name;
int age ;
String address;
void talk(
String name){
System.out.println("my name is "+
this.name);
}
}
创建一个类对象并调用成员函数。
Person p1=new Person();
p1.name="
zhangsan"
p1.talk(
"lisi");
此时给name赋了两个值,一个给成员变量赋值zhangsan,一个是给成员函数的参数赋值lisi,这里就考虑成员函数输出中调用的是成员变量还是成员函数的参数,在使用this的情况下,结果为
可以看到这里调用的是成员变量,而不带this的情况下,结果为
可以看到这里调用的是成员函数的参数,因此使用this可以区分调用类成员变量和类成员函数中的参数,this代表调用成员函数的对象。
this的另一种用法是在类内的一个构造函数中调用类内的另一个构造函数,比如类内有两个构造函数一个带有两个参数一个带有三个参数,可以在带有三个参数的构造函数里调用带有两个参数的构造函数,以实现对部分成员变量的赋值。
Person(String name , int age){
}
Person(String name,int age,String address){
this.Person(name,age);
this.age=age;
}
这里在构造函数里的参数name,age,address与成员变量重名,由this的第一个用法可以知道,使用this.name可以表示调用类的成员变量,因此在带有三个参数的构造函数中的this.age=age表示把构造函数参数的值赋值给类的成员变量,若要在带有三个参数的构造函数中使用其中两个参数给成员变量赋值,这样可以也仅可在第一行调用含有两个参数的构造函数来减少重复赋值。