首页 > 解决方案 > 等于表达式中的整数运算

问题描述

我知道第一个表达式的计算结果为 false,因为它们是两个不同的Integer对象。

我不确定为什么第二个表达式的计算结果为真。

public static void main(String[] args)  {
   System.out.println(new Integer(1000)==new Integer(1000)); // false       
   System.out.println(new Integer(1000)==new Integer(1000)+new Integer(0)); // true
}

我怀疑第二个表达式的计算结果为 true,因为右侧首先被拆箱为int,然后与左侧进行比较。这是真的吗?如果是这样,这是定义的行为吗?

标签: javaintegerunboxing

解决方案


因为 new Integer(1000)+new Integer(0) 返回 1000 值。所以java比较整数的值。1000==1000 等于真。Bu第一个输出是假的,因为这就是为什么java比较对象的引用。


推荐阅读