this:
看上去,是用于区分局部变量和成员变量同名情况。
this代表的是什么?
对于下面一个程序来说:this就代表本类的对象。也即是:this代表它所在函数所属对象的引用。简单说:哪个对象在调用this所在函数,this就代表哪个对象。
主函数声明一个对象p1,然后p1调用构造函数Person2(String name){},此时this指代的就是p1。
public class Demo20 {
public static void main(String[] args) {
Person2 p1=new Person2("WGS");
}
}
class Person2{
private String name;
private int age;
//构造函数
Person2(String name){
this.name=name;
System.out.println("B: name="+name+" "+"age="+age);
}
}
this的应用:
当定义类中的功能时,该函数内部要用到该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用了本类对象,都用this表示。
/*
* 需求:给人定义一个用于比较年龄是否相同的功能,也就是是否是同龄人。
*/
public class Demo20 {
public static void main(String[] args) {
Person2 p1=new Person2(20);
Person2 p2=new Person2(25);
boolean b=p1.compare(p2);
System.out.println(b);
}
}
class Person2{
private String name;
private int age;
//构造函数
Person2(int age){
this.age=age;//在该程序中指代的是p1
}
public boolean compare(Person2 p){
return this.age==p.age;
}
}
输出结果为:false
this语句:用于构造函数之间进行互相调用。
this语句只能定义在构造函数的第一行,因为初始化要先执行。
public class Demo20 {
public static void main(String[] args) {
Person2 p1=new Person2("WGS",22);
}
}
class Person2{
private String name;
private int age;
//构造函数
Person2(){
}
Person2(String name){
this.name=name;//this也是指代p1
}
Person2(String name,int age){
this(name);//这句语句必须放在第一行,因为初始化要先执行。再者它先调用上面的构造函数,
// this.name=name;
this.age=age;//在该程序中指代的是p1
}
public boolean compare(Person2 p){
return this.age==p.age;
}
}