通常,我们说的this表示的是"当前对象",简单的说说this使用需要注意的地方,温故而知新嘛。
①如果一个类有多个构造方法,那么可以在一个构造方法里面通过this调用另外一个构造方法。如:
public ThisTest(){
System.out.println("通过this()方法调用ThisTest()构造器!");
}
public ThisTest(int i ){
//调用无参构造器
this();
System.out.println("i="+i);
}
②若为其赋予一个参数的话,this关键字就会自动匹配参数相同的构造方法。如
public ThisTest(String str){
//TODO
}
public ThisTest(int i){
System.out.println("如果this关键字附带参数,就会自动匹配与之相同的构造器");
}
public ThisTest(int i ){
this(i); //this关键字自动匹配形参相同的构造器
}
③同一个构造方法里面不能有两次this调用。如:
public ThisTest(){
System.out.print("-------------------");
}
public ThisTest(int i){
System.out.println("i="+i);
}
public ThisTest(int i ){
this();
// this(i); //同一个构造器里面不能有两次this调用
}
④不能在构造方法之外任何方法里面使用this来调用构造函数。如:
public ThisTest(int i){
System.out.println("i="+i);
}
private void f(int i ){
// this(i); //在方法中不能通过this关键字来调用构造函数
}
public static void main(String[] args){
// this(); //在main方法中也不能通过this来调用构造函数
}
⑤方法中不必通过this来调用另一个方法。如:
public void _f(int i){
//TODO
}
public void f(int i ){
// this._f(i); //方法中不必通过this关键字来调用另外一个方法
_f(i); //而是直接调用
}
⑥通过this.只能调用类的成员变量。如:
public class ThisTest{
private String m ;
public ThisTest(String m){
this.m = m; //this只能引用成员变量,即便是局部参数和成员参数名相同
}
public ThisTest(String n){
// this.n; //这是错误的引用
}
}