“if(new Integer(1)== new Integer(1))”如何在Java中工作?

时间:2013-05-25 08:18:36

标签: java

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

将返回true。

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

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

2 个答案:

答案 0 :(得分:15)

在Java中工作:

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

您可能会对自动装箱感到困惑,重复使用对象以获取较小的值(具体范围是特定于实现的 - 请参阅JLS section 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。< / p>

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

答案 1 :(得分:2)

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

Here is the good reference将帮助您了解比较在java中的工作原理以及如何实现您的需求。