this 的本质
一. 创建一个对象分为如下四步:
1. 分配对象空间,并将对象成员变量初始化为 0 或 空
2.执行属性值的显式初始化
3.执行构造方法
4.返回对象的地址给相关的变量
二. this 的本质
this 的本质就是 “创建好的对象的地址” ! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用 this 来代表 “当前对象“。
三. this 的最常用法
1. 这可以用来引用当前的类实例变量。
2. this()可用于调用当前类构造函数,可以用来调用当前的类方法(隐式)
3.this 不能用于 static 方法中
1. 在程序中产生二义性之处,应使用 this 来指明当前对象;普通方法中, this 总是指向调用该方法的对象。构造方法中,this 总是指向正要初始化的对象。
2. 使用 this 关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。
public class ThisTest {
int a;
int b;
int c;
ThisTest(int a,int b){
this.a = a ;
this.b = b;
}
ThisTest(int a,int b,int c){
this(a,b);
this.c = c;
}
public void ThisTest2(int a,int b,int c){
// this(a,b);// 错误,this( ) 不能在普通方法中使用,只能写在构造方法中。
this.c = c;
}
public static void main(String[] args) {
}
}
3.this 不能用于 static 方法中。对于 static 修饰的方法而言,可以使用类来直接调用该方法,如果在 static 修饰的方法中使用 this 关键字,则这个关键字就无法指向合适的对象。所以,static 修饰的方法中不能使用 this 引用。并且 Java 语法规定,静态成员不能直接访问非静态成员。
public class ThisTest {
int a;
int b;
int c;
ThisTest(int a,int b){
this.a = a ;
this.b = b;
}
public void ThisTest2(int a,int b,int c){
String[] str = {"ee","rr"};
ThisTest.main(str);
this.c = c;
}
public static void main(String[] args) {
}
}
四.试题:
哪些语句能放在如下代码中所示位置,而不会导致编译错误?
哪些语句能放在如下代码中所示位置,而不会导致编译错误?
请选出3个正确的答案: (a)、(b)、(d)。
( a ) i=this.plane
( b )i=this.car;
( c ) this=new ThisUse();
( d ) this.car=plane;:
参考地址:
https://baijiahao.baidu.com/s?id=1619660478054245720&wfr=spider&for=pc