this关键字有两个作用: 1、 用于区分局部变量和成员变量同名情况 2、 用于构造函数间的调用 区分局部变量和成员变量同名: this代表所在函数所属对象的引用。 简单说,哪个对象在调用this所在的函数,this就代表哪个对象 classPerson { String name; int age; Person(String name, inta) { this.name = name; //将参数中的name赋给所属对象的name。此处的this代表调用Person(String name, int a)的对象 age = a; System.out.println("name="+name+",,age="+age); } } 当定义类中功能时,该函数内部要用到调用该函数的对象时,用this来表示这个对象。 但凡本类功能内部使用到了本类对象,都用this表示。 class Person { String name; int age; Person(){} Person(int a) { age = a; System.out.println("name="+name+",,age="+age); } //需求:给人定义一个比较年龄是否相同的功能,即判断是否为同龄人 public booleancompare(Person p) { returnthis.name==p.name; } } class PersonDemo3 { public static voidmain(String[] args) { Person p1 = newPerson(20); Person p2 = newPerson(21); boolean b =p1.compare(p2); System.out.println("Sameage:"+b); //Same age:false } } 构造函数间的调用: this语句只能定义在构造函数的第一行,因为初始化要先执行。 class Person { String name; int age; Person(){} Person(String name) { this(); //调用构造函数Person(); this.name = name; } Person(String name, intage) { //this.name = name; /*是给this.name进行赋值,它的功能已经定义在构造函数Person(Stringname)中, 因此,也可以通过调用Person(Stringname)来完成。*/ this(name); //用this完成构造函数间的调用 this.age = age; System.out.println("name="+name+",,age="+age); } } class PersonDemo4 { public static void main(String[] args) { Person p1 = newPerson("zhangsan", 20); } } |