gpt4 book ai didi

java - "if(new Integer(1) == new Integer(1))"在Java中如何工作?

转载 作者:行者123 更新时间:2023-12-01 06:28:05 25 4
gpt4 key购买 nike

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 编译器是否有任何接口(interface)供包装类获取它们的值并进行比较?

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

最佳答案

它在 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 .

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

关于java - "if(new Integer(1) == new Integer(1))"在Java中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16747745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com