this代表当前类的引用对象:哪个对象调用方法,该方法内部的this就代表那个对象
this关键字主要有两三个应用: (1)this调用本类中的属性,也就是类中的成员变量;
class People { private int age; private String name; People(String name,int age) { /* 错误写法,实际就是x=x;改变的是局部变量的值。因为赋值是会先寻找局部变量,若局部变量没有,才会找成员变量 name=name; age=age; */ //this是区分局部变量和成员变量同名问题,this代表所在函数所属对象的引用。简单理解: 哪个对象调用this所在的函数,this就代表这个对象 this.name=name; this.age=age; } public void speak() { System.out.println("myname is "+name+", age is "+age); } } class PeopleDemo { public static void main(String[] args) { People p2=new People("zhang san",18); p2.speak(); } }
(2)定义类中的函数时,函数内部要用到调用此函数的对象时,可以用this来表示这个对象。但凡定义本类内部功能时,使用了本类对象,都能用this表示
//定义一个比较年龄是否相同的功能 public boolean compare(Person p1) { //compare功能用到了本类的对象,需要本类对象和其他对象进行比较 return this.age==p1.age; }
(3)this()用在本类中构造函数间相互调用,定义时要放在构造方法的第一行,因为初始化要先执行。
class People { private int age; private String name; People()//构造函数1 { this("lisi",10);//调用了构造函数2 } People(String name,int age)//构造函数2 { this.name=name; this.age=age; } public void speak() { System.out.println("myname is "+name+", age is "+age); } } class PeopleDemo { public static void main(String[] args) { People p2=new People(); p2.speak(); } }