Java中this关键字,先看一张图片
我们创建了两个Father类father,father1两个实例化对象,并通过调用display()方法输出this,我们发现,两次this关键字的值和实例化对象在堆内存的首地址值一样,所以this关键字存储的可以认为是一个指针,它是对对象的一个引用。所以在类的构造方法对对象进行初始化的过程中,为了避免构造函数的形参名和成员变量名一样导致在创建对象进行初始化赋值失败,我们使用this关键字区别成员变量和形参。
如果在有参构造方法中的形参和成员变量名字一样,在控制台输出为null,因为在高亮中我们看到,形参name和方法体里的name三个高亮,而成员变量name并没有高亮。导致构造方法赋值失败。而编译器警告内容为 The assignment to variable name has no effect 意思为对变量名的赋值无效。执行过程中,把构造方法里面的形参name和方法体里面的name = name三个name为一个name,所以成员变量初始化失败。加上this就初始化成功。
加上this关键字之后,this.name就被认为是Father里面的成员变量赋值也就成功了。
成员方法display()中加入this.print();成功执行print(),此时this指向的就是Father方法,所以this.print();等价于Father.print();
但是因为print()和display()方法名并不相同,不会像上面构造方法中形参和成员变量名字一样导致初始化失败。所以这个this省去不写,编译过程依然能够识别并顺利执行。
综上,我们可以把this关键字当作指向实例化对象的指针。实际上在前面我们可以看到,this里面的内容和实例化对象的地址是一样,所以把this关键字当作指针,其他问题就很容易明白。
Java中this关键字
最新推荐文章于 2024-08-09 15:15:32 发布