Java 关键字this怎么理解,问题在代码里

class Main {
public static void main(String[] args) {

x p1=new x(1);
x p2=new x(2);
System.out.print(p1.fou(p2));

}
}

class x{
int a;
public x(int a){//构造器初始化属性a的值。
this.a=a;
}

public boolean fou(x n){//比较两个对象属性是否一致
    if(this.a==n.a)//
    //这里的this说是当前对象。到底是指什么,怎么理解
    return true ;
    else return false;
}

}

this是当前对象。
例如main方法中的
x p1 = new x(1);
x p2 = new x(2);
System.out.print(p1.fou(p2));
p1,p2都使用构造函数创建了对象,那么分别创建对象的时候中的this分别指创建的x类对象,即p1,p2。
p1.fou(p2);这时候p1调用了方法fou();那么这时候方法中的this就指p1对象。

首先,你要知道this是什么?
this表示当前对象的意思。
什么情况下需要用this?
当参数名和当前类属性名相同的时候,用this指代(用来区分)
开发过程中,往往按义取名来定义参数名称,所以容易出现方法的参数名和类的属性名一致的情况,
为了区分开相同参数名属于类还是属性方法形参,所以引入this,用来指代。
如果不想用this,可以修改方法的参数名,只要跟类中的属性名不一致即可。

你得问题中的this指的是当前对象,也就是说调用fou方法的那个对象

以代码里的来说,this指的是当前对象,也就是p1

this就是指你当前x的对象,也就是你fou方法传进来的一个x对象把属性a赋值给你当前的x对象的a属性

img

this 这,这个
p1.fou() p1的fou()方法,this 指的就是 p1

我抽象一下,类相当于一张身份证,new一个对象相当于复印一张身份证复印件,每一个对象都有自己的this,谁调用就表示谁

this 这个,当前这个,谁用就是指的谁

调用fou函数的时候 会执行到那行代码,所以谁调用,这里的this 当前对象就指得是谁。
在这个代码里,Main类中执行 p1.fou(p2),也就是说p1调用了这个方法,所以 this就是p1, 方法中的n 就是 传入的参数p2

当成员变量和局部变量重名时,在方法中使用this时,表示的是该方法所在类中的成员变量

参考一下c语里面的指针

obj.func()相当于func(obj)
而func中this就相当于参数obj

this.当前类中的成员变量

this是Java中的关键字,总是指向调用该方法的对象。
this作为对象的默认引用有两种情形:

  1. 构造中引用该构造器正在初始化的对象
  2. 在方法中引用调用该方法的对象。

```java
public class Main {
    public static void main(String[] args) {
        X p1 = new X(1);
        X p2 = new X(2);
        System.out.println(p1.fou(p2));
    }

}

class X{
    int a;

    //这是一个构造方法,就是X类创建对象时调用的。
    public X(int a) {
        this.a = a;//这里的this就是指构造器正在初始化的对象。
    }

    public boolean fou(X n){
        if(this.a==n.a)// 这里的this就是指调用该方法的对象。在本例中,我们在主函数创建的对象p1,调用fou这个函数时,此时this就是指p1这个对象。
            return true;
        else
            return false;
    }
}

```

肯定用对象调用方法,这个类实例化对象出来,哪个类的对象在调用,this肯定就是这个类的这个对象呗