- Java提供了this关键字,表示当前对象,指向调用的对象本身
package com.xdl.java.pkg04;
public class Person {
public void equals(Person p) {
// 打印this的地址
System.out.println(this);
// 打印对象地址
System.out.println(p);
// 比较当前对象与this是否相等
if (this == p) {
System.out.println("相等");
} else {
System.out.println("不相等");
}
}
}
package com.xdl.java.pkg04;
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.equals(p1);
p1.equals(p2);
}
}
- this可以明确调用类的成员变量,不会与局部变量发生冲突
package com.xdl.java.pkg04;
public class Person2 {
private String name;
private int age;
public Person2(String name, int age) {
this.name = name;
this.age = age;
}
public void say() {
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
- this可以访问成员方法
package com.xdl.java.pkg04;
public class Person3 {
private String name;
private int age;
public Person3(String name, int age) {
this.name = name;
this.age = age;
}
public void say() {
System.out.println("姓名:" + name + ",年龄:" + age);
this.log("abc");
}
public void log(String msg) {
System.out.println("日志调用:" + msg);
}
}
- this调用构造方法
- 在构造方法中,this必须位于首行,只能出现1次
- this调用构造方法时,一定要留一个出口
package com.xdl.java.pkg04;
public class Person4 {
private String name;
private int age;
public Person4() {
System.out.println("无参构造方法被调用了");
}
public Person4(String name, int age) {
// 调用了无参的构造方法
this();
System.out.println("有参构造方法被调用了");
this.name = name;
this.age = age;
}
public void say() {
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
package com.xdl.java.pkg04;
public class TestPerson4 {
public static void main(String[] args) {
Person4 p = new Person4("张三", 18);
p.say();
}
}