Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“怎么做?”;如果(新整数(1)=新整数(1))“;用Java工作?_Java - Fatal编程技术网

“怎么做?”;如果(新整数(1)=新整数(1))“;用Java工作?

“怎么做?”;如果(新整数(1)=新整数(1))“;用Java工作?,java,Java,我需要对其进行编码/实现,以便此测试: if(new Integer(1) == new Integer(1)) return true; 将返回真值 Java编译器是否有任何接口用于包装类获取它们的值并进行比较 或者简单地说:如何检查某个对象>其他对象(用户定义的对象,但不是由某个原始值/包装类定义的对象)?它在Java中不起作用: //door is a class and the constructor takes length, breadth, width if(new Door(1

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

if(new Integer(1) == new Integer(1)) return true;
将返回真值

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

或者简单地说:如何检查
某个对象>其他对象(用户定义的对象,但不是由某个原始值/包装类定义的对象)?

它在Java中不起作用:

//door is a class and the constructor takes length, breadth, width
if(new Door(10,10,10) == new Door(10,10,10))
您可能会对自动装箱感到困惑,因为自动装箱将重用对象以获得较小的值(具体范围取决于具体的实现-请参阅本部分的底部):

new
操作符始终返回对新对象的引用,因此
new…==新建…
将始终计算为
false


Java中不能重载运算符-通常,对于相等比较,应该使用
equals
(您可以在自己的类中重写和重载)并实现排序,然后使用
compareTo
=
将比较“对象引用”的值,而不是“对象值”本身


这将帮助您了解比较在java中是如何工作的,以及如何实现所需的内容。

查找实现equals和hashCode。在java中,运算符重载不可用。
==并不总是适用于Integer,您需要小心。大多数参考资料都不一样。(这只适用于-128和127之间的值)@marounnaroun:它只保证在-128和127之间工作。作为一个实现细节,它可能适用于更大的值。@JonSkeet感谢您的澄清!很好,但是仍然使用equals()java表示它们相等/不相等,但不会表示它们(obj1、obj2)是否更大less@user2419836:这就是为什么我说您需要实现
Comparable
并调用
compareTo
@user2419836,这完全取决于您如何实现
equals()
hashcode
。我们将如何识别一个对象大于或小于另一个对象。如果该对象不是包装类(如门)@RaviTrivedi:您不能使用
equals
进行排序。仅仅因为你知道两个值不相等并不意味着你知道哪个值比另一个值“小”。嗯,
=
比较值,对象的值是它的引用(而不是对象中的基础数据)。这就是为什么Java是“按值传递”的,但却到处抛出对象引用()。这里的“对象”指的是“非原语”,我也指的是“非原语”。请通读我之前评论中链接问题的答案。是的,原语和非原语都包含数字值。对于非原语,您得到的是对象hashcode(非实数值)。在原语的情况下,你会得到真正的值。
if (new Integer(1) == new Integer(1)) {
    System.out.println("This will not be printed.");
}
Integer x = 1;
Integer y = 1;
if (x == y) { // Still performing reference equality check
    System.out.println("This will be printed");
}