this 关键字的理解以及运用

时间:2022-10-17 00:43:01

this 关键字


this:看上去,是用于区别局部变量和成员变量同名情况
this为什么可以解决这个问题?
this到底代表的是什么呢?
this:就代表本类的对象,但是到底代表哪一个呢?


this代表它所在函数所属对象的引用
简单说:哪个对象在调用this所在的函数,this就代表哪个对象


class Person
{
private String name;
private int age;

Person(String name)
{
this.name = name;
}

Person(String n,int a)
{
this.name = n;
this.age = a;
}

public void speak()
{
System.out.println("A name = "+name+"...age = "+age);
// System.out.println("A name = "+this.name+"...age = "+this.age);
show();
// this.show();
}

public void show()
{
System.out.println(this.name);
}
}

public class PersonDemo3 {


public static void main(String[] args) {
Person p = new Person("小鱼");
// p.speak();
Person p1 = new Person("小虾");
p.speak();
p1.speak();

}

}


this关键字的基本运用


//this的应用:当定义类中功能时,该函数内部都要用到调用该函数的对象时,这时用this来表示这个对象
class Person
{
private int age;

Person(int age)
{
this.age = age;
}
/*
* 需求:给人定义一个用于比较年龄是否相同的功能。也就是是否是同龄人
*/

public boolean compare(Person p)
{
return this.age == p.age;
}
}

public class PersonDemo3 {


public static void main(String[] args) {
Person p1 = new Person(20);
Person p2 = new Person(25);

boolean b = p1.compare(p2);
System.out.println(b);

}

}

this关键字在构造函数之间的调用



/*
* this语句:用于构造函数之间进行互相调用
*
* this语句只能定义在构造函数的第一行。因为初始化要先执行
*/

class Person
{
private String name;
private int age;


Person()
{

}

Person(String name)
{
this();
this.name = name;
}

Person(String name,int age)
{
// this.name = name;
this(name);//p(name) | new Person(name);
this.age = age;
}

public void speak()
{
System.out.println("A name = "+name+"...age = "+age);
}

}

public class PersonDemo3 {

public static void main(String[] args) {
Person p = new Person("小鱼",20);
// Person p1 = new Person("小鱼2",2);
p.speak();

}

}