这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。
使用this关键字
在实例方法或者构造器中,this是指向当前对象(方法或者构造器被调用的对象) 的引用。在对象方法或构造器中使用this可以访问对象中的任何成员。
和字段一起使用this
常见使用this关键字的一个原因是方法或者构造器的参数是某个字段的影子字段。
比如,Point类这样来写:
public class Point{
public int x = 0;
public int y = 0;
public Point(int a,int b){
x = a;
y = b;
}
}
也可以写成这样
public class Point{
public int x = 0;
public int y = 0;
public Point(int x,int y){
this.x = x;
this.y = y;
}
}
每一个构造器参数都是对象字段的一个影子字段 - 在构造器内部x是构造器第一个参数的一个本地拷贝,为了引用Point对象的字段x,构造器必须使用this.x。
和构造器一起使用this
在构造器中,你也可以使用this关键字来调用类中的其他构造器。这样做被称为显示的构造器调用。下面是另外一个Rectangle 类,
public class Rectangle{
private int x,y;
private int width,height;
public Rectangle(){
this(0,0,1,1);
}
public Rectangle(int width,int height){
this(0,0,width,height);
}
public Rectangle(int x,int y,int width,int height){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
···
}
该类有一批构造器。每个构造器都要初始化矩形类成员中的一部分或者全部字段。构造器为每个成员提供了默认值,但这些成员的初始值不是由构造器提供的。比如,无参构造器创建原点为(0,0),1*1的矩形。两个参数的构造器调用四参构造器,传递width和height,但仍然使用原点(0,0)。如前文所述,编译器将决定调用哪个构造器,基于参数的数目和类型。
如果存在对构造器的显示调用,必须位于其他构造器的第一行代码中。