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

标签 java python operator-overloading overloading

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

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

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

有人知道吗?

谢谢。

最佳答案

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

关于java - 如何在java中重载相等并打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15537450/

相关文章:

java - 使用 java 8 IntStream 以循环方式从给定索引开始迭代列表,并获取与条件匹配的第一个元素的索引

java - Selenium Webdriver 无法使用标记名识别页面上的链接

Python POST 字符串数据

C++ - 按字母顺序排列字符串

c++ - 如何重载运算符=

java - 如何测试 "Too Many Files Open"问题

javascript - 使用 WebSocket 连接到服务器时连接被拒绝

python - 如何找到传递给函数的变量的名称?

python - Uncaught ReferenceError : Braintree is not defined

c++ - std::map 和 std::pair 的问题