在比较 Integer 对象和常量值时,Java 是否将值装箱或取消装箱 Integer 对象?
根据我所阅读的内容,“==”是一个引用比较,因此假设 Java 封装常量来执行对象之间的引用比较是合乎逻辑的。然而,下面的测试代码似乎给出了矛盾的结果。
Integer v1 = 1000;
Integer v2 = 1000;
boolean b1 = v1 == 1000; //True.
boolean b2 = v1 == v2; //False. Proof that 1000 boxes to new object and is not fetched from cache.
那么对象与常量值比较==
在 Java 中是如何工作的呢?在这种情况下,运算符是否按值进行比较?