【问题标题】:Compare Integer with primitive将整数与基元进行比较
【发布时间】:2013-11-29 07:52:45
【问题描述】:

我没有java 编译器,我想检查java 如何处理Integer 对象与原语的比较。有人可以确认以下比较的结果是否正确:

Integer a = 500;
long b = 500;
a == b  //-> false
a.equals(b)  //-> true

在第一种比较 java 中Boxing 和第二种Unboxing 并比较原始值,这通常是真的吗?

【问题讨论】:

  • 获取 JDK、Eclipse 安装并进行测试非常容易。但是,有this
  • 好的,谢谢,真的很有帮助。不幸的是,由于安装权限,我无法在接下来的几个小时内使用真正的 JDK 对其进行测试。
  • 您可以使用我在之前评论中链接的那个网站(在线编译和执行Java)。它在您的浏览器上运行(好吧,Java 程序在他们的服务器上运行)。无需安装任何东西,即使是 JRE。

标签: java integer equals long-integer


【解决方案1】:

查看我的结果

    Integer a = 500;
    long b = 500;
    System.out.println(a == b);
    System.out.println(a.equals(b));

输出

true
false

这是因为第一次比较使用了拆箱

b == a.intValue()

这会产生 true,因为在 Java 500L == 500 中是 true。

第二个比较使用拳击

a.equals(Long.valueOf(b))

这会产生错误,因为 a 和 b 是不同类的实例。参见 Integer.equals impl:

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2014-01-26
    相关资源
    最近更新 更多