0
if(new Integer(1) == new Integer(1)) return true;

我需要对此进行编码/实现,以便进行以下测试:

//door is a class and the constructor takes length, breadth, width
if(new Door(10,10,10) == new Door(10,10,10))

将返回真。

Java 编译器是否有任何用于包装类的接口来获取它们的值并进行比较?

或者简单地说:如何检查some object > other object(用户定义的对象而不是某些原始值/包装类)?

4

2 回答 2

15

它在 Java 中不起作用

if (new Integer(1) == new Integer(1)) {
    System.out.println("This will not be printed.");
}

您可能对自动装箱感到困惑,它为小值重用对象(确切范围是特定于实现的 - 请参阅JLS 部分 5.1.7的底部):

Integer x = 1;
Integer y = 1;
if (x == y) { // Still performing reference equality check
    System.out.println("This will be printed");
}

new运算符始终返回对新对象的引用,因此始终new ... == new ...计算为.false

您不能在 Java 中重载运算符 - 通常用于相等比较,您应该使用equals(您可以在自己的类中覆盖和重载)并实现Comparable<T>排序,然后使用compareTo.

于 2013-05-25T08:21:39.100 回答
2

==将比较“对象的引用”的值,而不是“对象的值”本身。

这是一个很好的参考资料,可以帮助您清楚比较在 java 中的工作原理以及如何实现您需要的内容。

于 2013-05-25T08:27:50.980 回答