Java 使用运算符自动装箱和比较对象

Java autoboxing and comparison of Objects using operators

当数值比较运算符用于比较 Java 中的 2 个整数对象时,我试图理解以下代码的行为。

    Integer i1 = new Integer(1);
    Integer i2 = new Integer(1);
    System.out.println(i1 == i2);
    System.out.println(i1 > i2);
    System.out.println(i1 >= i2);

以上代码的输出为:

false
false
true

我明白第一种情况发生了什么(对象实例的比较就是为什么它给出 false)。但是为什么第二种和第三种情况不同,它是如何工作的呢?

因为<>>=<=是数值比较,编译器知道要拆箱

但是,==!= 始终用作非基本类型的参考比较器。