JAVA中This的本质
this关键字
this的本质:就是系统自动生成的隐藏的参数用来存放当前对象的地址
在每一个普通方法中都存在隐式参数this
this的其他要点:
- this()调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。
- this不能用于static方法中。
- this是作为普通方法的“隐式参数”,由系统传入到方法中。
普通方法中,this总是指向调用该方法的对象。
示例:public class TestThis {
int a,b,c;
void a(){
System.out.println("指向调用该方法的对象1"+this);
}
public TestThis() {
可以在构造方法中用this调用本类中的普通方法,因为this中存放的是当前类的地址
this.a();
}
public TestThis(int a) {
this();
//this.a指向类中的成员变量a ,a指的是传入的形式参数a。
this.a = a;
}
public TestThis(int a, int b) {
this(a);
this.b = b;
}
public TestThis(int a, int b, int c) {
this(a,b);
this.c = c;
System.out.println(this);
}
public static void main(String[] args) {
TestThis testThis = new TestThis();
testThis.a();
System.out.println("对象1"+testThis);
}
} 构造方法中,this总是指向正要初始化的对象。
示例:
public class TestThis {
int a;
int b;
int c;
void a(){
System.out.println("指向调用该方法的对象1"+this);
}
public TestThis() {
this.a();
System.out.println("正要初始化的对象"+this);
}
public TestThis(int a) {
this();//调用无参构造器且必须位于第一行
this.a = a;
}
public TestThis(int a, int b) {
this(a); 调用有参构造器且必须位于第一行
this.b = b;
}
public TestThis(int a, int b, int c) {
this(a,b);
this.c = c;
System.out.println(this);
}
public static void main(String[] args) {
TestThis testThis1 = new TestThis();
System.out.println("正要初始化的对象"+testThis1);
}
} 