java - 等于表达式中的整数运算
问题描述
我知道第一个表达式的计算结果为 false,因为它们是两个不同的Integer对象。
我不确定为什么第二个表达式的计算结果为真。
public static void main(String[] args) {
System.out.println(new Integer(1000)==new Integer(1000)); // false
System.out.println(new Integer(1000)==new Integer(1000)+new Integer(0)); // true
}
我怀疑第二个表达式的计算结果为 true,因为右侧首先被拆箱为int,然后与左侧进行比较。这是真的吗?如果是这样,这是定义的行为吗?
解决方案
因为 new Integer(1000)+new Integer(0) 返回 1000 值。所以java比较整数的值。1000==1000 等于真。Bu第一个输出是假的,因为这就是为什么java比较对象的引用。
推荐阅读
- python - NameError:名称'args'未定义?
- grafana - 如何通过对石墨的一次请求获得一个平均值
- fortran - Fortran 未定义对 _[子例程名称] 的引用
- ios - Ionic 4 - Facebook 插件返回“用户已取消”。在 iOS 上尝试登录时
- node.js - 使用 Azure DevOps 部署 Node.js 应用程序会导致有关缺少模块的错误
- python - 如何从以 m 为底的字符串转换为以 n 为底的字符串
- javascript - 如何在反应节点 js 项目中从客户端创建动态元标记?
- r - 如何在 facet_nested 中订购 x 轴
- python - 如何在 GPU 上有效地并行化 AlphaZero?
- c++ - 通过 C++ 中的 udp 套接字将派生类对象从一个进程发送到另一个进程