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)。但是为什么第二种和第三种情况不同,它是如何工作的呢?
因为<
、>
、>=
、<=
是数值比较,编译器知道要拆箱
但是,==
和 !=
始终用作非基本类型的参考比较器。
当数值比较运算符用于比较 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)。但是为什么第二种和第三种情况不同,它是如何工作的呢?
因为<
、>
、>=
、<=
是数值比较,编译器知道要拆箱
但是,==
和 !=
始终用作非基本类型的参考比较器。