【发布时间】:2013-10-21 03:27:22
【问题描述】:
当我尝试比较 2 个 Long 变量时遇到了一个非常奇怪的问题,它们总是显示为 false,我可以通过在 Eclipse 中调试确定它们具有相同的数值:
if (user.getId() == admin.getId()) {
return true; // Always enter here
} else {
return false;
}
以上 2 个返回值都是对象类型 Long,这让我很困惑。并验证我是否编写了这样的 main 方法:
Long id1 = 123L;
Long id2 = 123L;
System.out.println(id1 == id2);
它打印的是真的。
那么有人可以给我一些想法吗?我在 Java 开发领域工作了 3 年,但无法解释这种情况。
【问题讨论】:
-
这取决于 Long 的大小。较小的 Long 和 Integer 是隐藏的,并且是真正相同的对象,但较长的不是,对于这些,您需要使用
.equals(...)或将它们拆箱。
标签: java equals long-integer