等号表达式中的整数算术

问题描述

我知道第一个表达式的计算结果为 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
}

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

解决方法

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