当前位置: 首页 > 知识库问答 >
问题:

等式运算符,奇数结果?[副本]

唐阳泽
2023-03-14

我对下面这段代码有一个问题:

public class Equivalence {
    public static void main(String[] args) {
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.println(n1 == n2);
        System.out.println(n1 != n2);
    }
}

结果输出让我大吃一惊:

false
true

我已经在线检查了Javadoc中的构造函数,没有任何帮助。

共有1个答案

元玮
2023-03-14

只有基元类型才能可靠地与==进行比较。对于对象(并且integer是对象类型),应该使用equals()方法

==可以用于对象,但只能用于检查两个对象实际上是否相同。例如:

Integer n1 = new Integer(47);
Integer n2 = n1;
// n1 == n2 will be true

最好将ints看作数字本身,将integers看作一张写有数字的便利贴。==仅当您谈论的是同一张便笺时才返回true,equals()但对于任何两张具有相同编号的便笺都将返回true。

 类似资料:
  • 我正在用mongodb和mongoose开发一个expressjsapi。 我想在Javascript es6中创建一个对象,该对象由几个变量和猫鼬请求的结果组成,并希望使用es6扩展运算符这样做: 问题在于应用扩展运算符以wierd方式对其进行结果变换: 我有点理解对象结果被猫鼬丰富,以允许与它进行特定的交互,但是当我在这样做之前console.log时,它描绘了一个没有所有这些东西的简单对象。

  • 问题内容: 我对条件运算符有些疑惑。考虑以下两行: 为什么f1变为null且第二条语句引发NullPointerException? Langspec-3.0第15.25段说: 否则,第二和第三操作数分别为S1和S2类型。令T1为对S1进行装箱转换所产生的类型,而T2为对S2进行装箱转换所产生的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的

  • 我对条件运算符有点困惑。请考虑以下两行: 为什么f1变成null,而第二条语句抛出NullPointerException? LANSPEC-3.0第15.25段SAIS: 否则,第二和第三操作数的类型分别为S1和S2。设T1是对S1应用装箱转换得到的类型,设T2是对S2应用装箱转换得到的类型。条件表达式的类型是将捕获转换(§5.1.10)应用于lub(T1,T2)(§15.12.2.7)的结果。

  • 我对这个结果很困惑。 是不同的对象,当处理时,它会比较第一个元素的地址,所以 的行为。 (*)是否等于 ? 是一个对象吗?和都指向这个物体的第一个元素?

  • Java有运算符吗?请不要关闭这个问题,我确实搜索了文档,我肯定没有,但我想完全确定。 也就是说,可以有之类的东西,或者在视觉上类似于Java中的东西。

  • 问题内容: 我很惊讶在Google上找不到这个简单的发音问题的答案。在检查了十几个不同的页面之后,我只想在这里询问… 根据此页面,3&5导致1。5等于7。我唯一的问题就是: 我们如何获得3和5中的1? 如何获得3分7分| 5? 另外,负数呢? 8和-8如何得出8? 果然,用Java编写以下代码: 产生以下输出: 但是同样,如何确定/计算这些结果? 问题答案: 3&5: 3 | 5: Java中的否