this关键字的基本概念

    科技2022-07-11  104

    Java基础之this关键字的基本概念

    java中的this关键字是写在方法里面的,分为以下两种情况:

    若在构造方法中出现this关键字,this表示当前正在创建的对象。若在成员方法中出现关键字this,this表示当前正在调用的对象。

    先解释第一句话: 【范例1】:构造方法中的this

    class ThisDemo{ // 构造方法 public ThisDemo() { // 构造方法中的this表示当前正在创建的对象 System.out.println("构造方法中的this:" + this); } // 成员方法 /* public void show() { // 成员方法中的this表示当前正在调用的对象 System.out.println("show中的this:" + this); // ThisDemo@63d4e2ba } */ public static void main(String args[]) { // 创建ThisDemo类型的引用,指向ThisDemo类的对象 ThisDemo td = new ThisDemo(); //td.show(); System.out.println("main中的td:" + td); // ThisDemo@63d4e2ba } }

    输出结果:

    构造方法中的this:ThisDemo@63d4e2ba main中的td:ThisDemo@63d4e2ba

    从以上结果可看出对象td和this的值是一样的。

    之前说过“构造方法中的this表示当前正在创建的对象”。 本例中,“当前正在创建的对象”就是“new ThisDemo()”,this表示当前正在创建的对象,因此this就表示“new ThisDemo()”。引用变量td也表示当前正在创建的对象"new ThisDemo()",因此this的值也就和td的值相同。

    如果"当前正在创建的对象"是"new Teacher()",那么this就表示"new Teacher()",如果"当前正在创建的对象"是"new Animal()",那么this就表示"new Animal()"。

    ------------------------------------------------------------------华丽分割线------------------------------------------------------------------

    解释第二句话: 【范例2】:成员方法中的this

    class ThisDemo{ // 成员方法 public void show() { // 成员方法中的this表示当前正在调用的对象 System.out.println("show中的this:" + this); // ThisDemo@63d4e2ba } public static void main(String args[]) { // 创建ThisDemo类型的引用,指向ThisDemo类的对象 ThisDemo td = new ThisDemo(); td.show(); System.out.println("main中的td:" + td); // ThisDemo@63d4e2ba } }

    输出结果:

    show中的this:ThisDemo@63d4e2ba main中的td:ThisDemo@63d4e2ba

    从以上结果可看出二者的值是相同的。 之前说过“成员方法中的this表示当前正在调用的对象”。翻译成人话就是“谁调用的该方法,this就代表谁”。很显然,是td调用的show()方法,因此this代表td,this和td的值也就相同了。 如果是one调用的show()方法,那么this就代表one,如果是two调用的show()方法,this就代表two。

    从【范例1】和【范例2】我们可以得出:this和td只是同一个对象的两种称呼而已,二者都代表“new ThisDemo()”。就比如td是鲁迅,this是周树人,都表示同一人同一对象,只是称呼不同而已。也可以理解成 ThisDemo this = td,因为this本质上就是引用变量,是当前类类型的引用变量。

    【强行总结】

    若在构造方法中出现this关键字,this表示当前正在创建的对象。(new的谁,this表示谁)若在成员方法中出现关键字this,this表示当前正在调用的对象。(谁调用的,this表示谁)this本质上就是本类的引用类型变量。(如果this出现在Person类中,this就是Person类型的引用,如果this出现在Teacher类中,this就是Teacher类型的引用)
    Processed: 0.009, SQL: 8