在java中,如何重载类的相等操作和打印操作?
就像在 python 中一样,您可以通过执行 def __eq__(self):
或 def __str__(self):
来实现,但是在 java 中如何实现呢?
我知道你可以手动创建一个方法并像 equals
之类的那样调用它,但我想知道是否有一个实际的方法可以与 ==
运算符和 System.out.print()
函数。
有人知道吗?
谢谢。
最佳答案
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));
}
}
关于java - 如何在java中重载相等并打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15537450/