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
(用户定义的对象,而不是某些原始值/包装类)?
答案 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中的工作原理以及如何实现您的需求。