查看本文:装箱的值和相等性
使用或比较包装器类型(例如
Integers,
Longs或
Booleans)时,您 会将它们作为引用* 而不是值 进行比较
。
==``!=*
如果两个变量指向不同的对象,则 即使对象表示相同的值* ,它们也不会==
相互影响。 *
示例: 使用
==和比较不同的Integer对象!=。Integer i = new Integer(10);Integer j = new Integer(10);System.out.println(i == j); // falseSystem.out.println(i != j); // true
解决方案是使用
.equals()… 比较值。
示例: 使用比较对象
.equals(…)Integer i = new Integer(10);Integer j = new Integer(10);System.out.println(i.equals(j)); // true
…或显式取消装箱操作数。
示例:通过 强制强制拆箱:
Integer i = new Integer(10);Integer j = new Integer(10);System.out.println((int) i == (int) j); // true
参考资料/进一步阅读
- Java:盒装值和相等性
- Java:基元与对象和引用
- Java:包装类型
- Java:自动装箱和拆箱



