这种方法在做什么? (JAVA)

时间:2014-06-06 00:30:15

标签: java class

我完全不知道下面的equals方法在做什么。我认为它正在检查一个物体是否与某物相等,但我很困惑。

public class Point {

    private int x,y;

    public Point(int x, int y){
        x = this.x;
        y = this.y;
    }

    public boolean equals(Point p){ // I am confused by what this method is doing?
        return x == p.x && y == p.y; // What is p.x and p.y doing?
    }

    public int getx(){
        return x;
    }

    public int gety(){
        return y;
    }

    public String toString(){
        return new String("(" + x + ", " + y + ")");
    }
}

2 个答案:

答案 0 :(得分:4)

检查两个点是否具有相同的内容。

p.xx引用的对象的p字段。这是您可以将当前对象的内容与另一个对象的内容进行比较的方法。

这里也有一个严重的错误。正常使用的模式是

public boolean equals(Object o) {

这是通常调用的方法,因此大多数实用程序类(如HashSet或ArrayList)都不会调用您的方法。

答案 1 :(得分:1)

函数equals接受一个参数,一个名为Point的{​​{1}}对象。

然后该功能检查它的'当前p值等于x x的{​​{1}}值。 (Point

p也是如此。 (x == p.x

如果它们都为真,则返回两个点对象相等。

(也就是说,当前y对象等于传递给函数y == p.y的{​​{1}} Point。)