如何在java中重载相等和打印?

时间:2013-03-21 00:40:38

标签: java python operator-overloading overloading

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

就像在python中一样,你可以通过def __eq__(self):def __str__(self):来实现,但是如何在java中完成呢?

我知道您可以手动创建方法并将其称为equals或类似内容,但我想知道是否存在可与==运算符配合使用的实际方法{{1}功能。

有人知道吗?

感谢。

1 个答案:

答案 0 :(得分:6)

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

System.out.print()使用Object.toString()生成其输出。您可以在班级中覆盖toString

如果您重写equals方法,请注意以下事项:如果您要覆盖equals方法,则还应覆盖hashCode方法,以便您的对象将使用HashSet等正确行事。有关hashCodeequals之间合同的详细信息,请参阅我链接到您的文档。

/编辑

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));
    }
}