this关键字

this关键字的基本概念

  若在构造方法中出现了this关键字,则代表当前正在构造的对象。

  若在成员方法中出现了this关键字,则代表当前正在调用的对象。

 

 

 总结:

  在构造方法中this代表着当前正在构造的对象,在成员方法中调用的是当前正在调用的对象,无论是准备阶段在构造的对象

还是调用阶段正在使用它的对象都是本类的对象,有上述案例可以看出,t1与t2打印出来的对象是不相同的,由此可证实上述说法

得准确性

 

工作原理

  在构造方法中和成员方法中访问成员变量时,编译器会加上this.的前缀,而this.相当于汉语中我的,当不同的对象调用同一个方法

时,由于调用方法的对象不同导致this关键字不同,从而this.方式访问的结果也就随之不同。

 

以下是我记录的几个案例,方便理解this关键字的使用方式:

案例1:

 

 

 

 

  为什么显示出来的是默认值null和0?是因为程序在运行的过程遵循就近原则,在类中出现相同的名字时程序第一时间

找到最近的name,也就是局部变量name而不是成员变量name;解决的办法在name前面加上this.即可;

ThisTest(String name, int age){
  this.name = name;
  this.age = age;
}

 

案例2

void grow(){

  age++;

}

void grow(int age){

  this.age +=age;

}

  在案例2中,两个grow方法有何不同?在于他们使用成员变量age时有没有发生歧义?没有发生歧义所以不需要使用

this关键字,发生歧义所以使用this关键字,因为在方法体中出现两个age令程序难以分辨他们分别处于什么角色?

 

 案例3,this关键字作为方法的返回值

 

   案例3中自定义成员方法getThisTest使用ThisTest作为返回值类型,为什么可以使用本类作为返回值类型?因为字符串的返回值类型是String,

如果理解不了就说服自己,说服不了就让别人说服你。。。

  ThisTest作为返回值类型在其作用是最后接收返回的值ThisTest本身,所以return this表示返回正在调用类的自身(就是t3引用的实例化的类的自身),

这时候t3调用ThisTest方法,将返回值赋值给t4,这样t4和t3指向了同一个地址;

 

案例4:调用其他构造方法(该方法使用的比较少,了解即可)

 

 

 

this关键字的使用方式:

  1、形参变量名与成员变量名同名,提高代码的可读性(开发的时候推荐使用该方法);

  2、没有产生歧义的成员变量不需要使用this关键字;

  3、当局部变量名与成员变量名相同时,在方法体中会优先使用局部变量(就近原则),若希望使用成员变量,则需要在

成员变量的前面加上this.的前缀,明确要求该变量是成员变量(重中之重)。

  3、this关键字除了可以通过this.的方式调用成员变量和成员方法外,还可以作为方法的返回值(重点)。

  4、在构造方法的第一行可以使用this()的方式来调用本类中的其他构造方法(了解

posted @ 2020-08-26 00:04  IJLog  阅读(562)  评论(0编辑  收藏  举报