1 this作为当前类的对象调用类中的方法
示例:
public class Student {
private String name = "张三";
private Integer age = 21;
public void prtName(){
System.out.println("name = " + name);
}
public void prtAge(){
System.out.println("age = " + age);
}
public void prtNameAge1(){
this.prtName();
this.prtAge();
}
public void prtNameAge2(){
prtName();
prtAge();
}
}
public class ThisDemo {
public static void main(String[] args){
Student student = new Student();
student.prtNameAge1();
student.prtNameAge2();
}
}
运行结果:
上例情况下,Student类中prtNameAge1()方法中的this即表示ThisDemo 类中student对象。prtNameAge1()方法和prtNameAge2()方法相同的输出结果看出在类方法中调用其他的本类方法并不一定需要使用this,直接使用方法名调用就可以,所以开发中可以省略。
2 this在构造方法(构造器)中的使用
在构造器中,由于属性名和方法参数名相同,所以使用this进行区分,以免混淆,这种用法十分常见;
示例:
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
}
3 在构造器中调用构造器,减少重复代码
示例:
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name) {
this.name = name;
}
public Student(Integer age) {
this.age = age;
}
public Student(String name, Integer age) {
this(name);
this.age = age;
}
}
示例中的this(name)调用了该类中的Student(String name)构造方法来完成name属性的构建,使代码减少冗余,但是,一个构造器中值允许调用一个构造方法,示例中调用了Student(String name)方法,便不能待使用this调用Student(Integer age)方法;
4 this作为方法的返回值将调用该方法的对象重新返回,可以对对象进行多重操作;
示例:
public class Student {
private String name;
private Integer age;
public Student() {
}
public Student(String name) {
this.name = name;
}
public Student(String name, Integer age) {
this(name);
this.age = age;
}
public Student prtName(){
System.out.println("name = " + name);
return this;
}
public Student prtAge(){
System.out.println("age = " + age);
return this;
}
public void prtNameAge(){
prtName();
prtAge();
}
}
public class ThisDemo {
public static void main(String[] args){
Student student = new Student("宙斯",800);
student.prtName().prtAge().prtNameAge();
}
}
运行结果:
示例中的prtName()方法prtAge()方法重新将student对象返回,使得可以使用student.prtName().prtAge().prtNameAge()对该对象进行多重操作。