this 作用
1.在return中使用, 返还当前对象的句柄
书中实例:
public class Leaf {
private int i = 0;
Leaf increment(){
++i;
return this;
}
void print(){
System.out.println("i="+i);
}
public static void main(String[] args){
Leaf x = new Leaf();
x.increment().increment().increment().print();
}
}
打印结果: i=3
通过increment()方法返回this,代表当前对象的句柄。所以可以方便对同一个对象执行多项操作。
2.在构建器里调用构建器 和引用成员变量
一个类写多个构建器,为了避免重复代码。
(1)在一个构建器里调用另一个构建器,但不可调用两个。
(2)根据参数列表分辨构造器。
(3)调用构造器必须是第一件做的事,否则会受到编译报错。
(4)非构造器不能调用构造器
调用内容(1)this.成员变量;(2)this(参数列表);
书中实例:
public class Flower{
private int petalCount = 0;
private String s = new String("null");
Flower(int petals){
petalCount = petals;//参数petals传递给成员变量petalCount
}
Flower(String ss){
s = ss;//参数ss传递给成员变量s
}
Flower(String s ,int petals){
this(petals);//调用第一个构造器
//this(s);若这样写,报错。只能一个。
this.s = s;//参数s 传递给成员变量s。this区分两个s。
}
Flower(){
this("hi",47);//调用第三个构造器
}
void print(){
//this(11);非构造器不能调用构造器
}
}
另外从一个类的一个方法调用两一个类方法,不必使用this,只要简单调用。
实例:class Apricot{
viod pick(){}
void pit(){
pick();
}
}
也可以写成this.pick(),但无此必要,编译器能自动完成。