0

在java中,如何重载一个类的相等操作和打印操作?

就像在 python 中一样,你可以通过做def __eq__(self):or来做到这一点def __str__(self):,但是如何在 java 中做到这一点呢?

我知道您可以手动创建一个方法并调用它之类的equals东西,但我想知道是否有一个实际的方法可以与==运算符和System.out.print()函数一起使用。

有人知道吗?

谢谢。

4

1 回答 1

6

Java 不支持运算符重载。==始终测试参考相等性。

System.out.print()用于Object.toString()生成其输出。toString你可以在你的类中覆盖。

并且您对重写该equals方法有一个警告是正确的:如果您要重写该equals方法,则还应该重写该hashCode方法,以便您的对象在使用HashSets 等时可以正确运行。hashCode关于和之间的合同的详细信息equals可以在我链接到的文档中找到。

/编辑

public class Point {
    private int x;
    private int y;

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

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

    public static void main(String[] args) {
        System.out.println(new Point(1, 2));
    }
}
于 2013-03-21T00:42:15.380 回答