在java中,如何重载类的相等操作和打印操作?
就像在python中一样,你可以通过def __eq__(self):
或def __str__(self):
来实现,但是如何在java中完成呢?
我知道您可以手动创建方法并将其称为equals
或类似内容,但我想知道是否存在可与==
运算符配合使用的实际方法{{1}功能。
有人知道吗?
感谢。
答案 0 :(得分:6)
Java不支持运算符重载。 ==
将始终测试参考相等。
System.out.print()
使用Object.toString()
生成其输出。您可以在班级中覆盖toString
。
如果您重写equals
方法,请注意以下事项:如果您要覆盖equals
方法,则还应覆盖hashCode
方法,以便您的对象将使用HashSet
等正确行事。有关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));
}
}