this关键字代表当前对象。当前对象是指:
在构造方法中,this代表当前正在创建的对象
在成员方法中,this代表当前正在调用该方法的对象
// 成员方法
public class Prog{
public static void main(String[] args){
int a=5;
Test test=new Test();
test.method(a);// 调用方法时给方法传递的就是实际参数
System.out.println(test.a);
}
}
class Test{
int a=10;
int b=20;
// 构造方法
public Test(int a){
this.a=a;// 用构造方法给正在创建的对象的成员变量赋值
}
public Test(int a, int b){
this(a);// 利用this关键字调用构造方法
this.b=b;
}
public void method(int a){
this.a=a;
}
}
在method方法中有两个变量的名称都是a,通过this关键字来区分成员变量和局部变量。
this表示调用本方法的当前对象,那么 this.a 就表示 对象名.成员变量名。
即等号右边是局部变量,等号左边通过this访问的变量是成员变量。
如果不用this来区分两个变量,就变成:a=a;将自己赋值给自己没有任何意义。
不用this来调用成员变量的话,则在方法中只能访问方法本身声明的变量,不能访问到成员变量。这也称为***属性隐藏问题***。
main方法的运行结果为:
5
其调用顺序为:
通过test.method(a);语句,将实参a的值赋给method方法的形参,在方法中形参又将值赋给成员变量,故最终成员变量的值为5而不是10