this关键字的三种用法
1.在本类的成员方法中访问本类的成员变量
public class YanShi {
// 成员变量
int num = 30;
// 成员方法
public void showNum(){
int num = 10;
System.out.println(num); // 输出本方法中的局部变量 num
System.out.println(this.num); // 输出本类中的成员变量 num
}
}
2.在本类的成员方法中访问本类的另一个成员方法
public class YanShi {
public static void main(String[] args) {
YanShi shi = new YanShi();
shi.methodB();
}
public void methodA(){
System.out.println("执行了A方法");
}
public void methodB(){
methodA(); // 直接调用了A方法
this.methodA(); // 通过this强调的调用了A方法
System.out.println("执行了B方法");
}
}
/*结果:
执行了A方法
执行了A方法
执行了B方法
*/
3.在本类的构造方法中调用本类的另一个构造方法
this(…)调用必须是构造方法中的第一个语句,也是唯一 一个
因此super与this 这两种构造调用,不能同时使用。因为super()调用也要求是第一个语句
this( ) 不能在普通方法中使用,只能写在构造方法中。
public class YanShi {
public YanShi(){
this(1); // 本类的无参构造调用本类的有参构造
// this(1,2) 错误的写法,与上一行语句的this调用无法同时存在
}
public YanShi(int a){
this(1,2);
}
public YanShi(int a, int b){
}
}