请考虑以下Java代码:
Object a = new Integer(2);
Object b = new Integer(2);
System.out.println(a.equals(b));
Object x = new Object();
Object y = new Object();
System.out.println(x.equals(y));
第一个打印语句输出true
,第二个输出false
。
如果这是一种有意的行为,那么这如何帮助Java编程?
如果这不是一种有意的行为,那么这是Java中的缺陷吗?
==
。子类也不能真正使其以“不同的方式”使用 - 每个类都有一个期望,即对于该特定类,每个类将使其执行相同的逻辑操作。这是继承的原则:如果您有一个makeSound()
方法,对于鸭子来说它会是“嘎嘎声”,对于牛来说它会是“哞哞声”,但总体上它会为实现的动物发出正确的声音。 - Borealidequals()
方法。实际上,这是大多数类 - 如果你随机选择一个类,很可能它没有(比如java.awt.Canvas
- 什么定义两个不同的画布是“相同的”?)。 - Borealid