You need to enable JavaScript to run this app. Java Integer相等比较中算术运算导致结果变化的原因疑问
优惠活动
大模型
产品
解决方案
定价
更多

Java Integer相等比较中算术运算导致结果变化的原因疑问

Integer使用==比较的结果说明
  • 你的推测完全成立。
  • 第一行表达式new Integer(1000) == new Integer(1000)返回false的原因:两侧都是通过new创建的独立Integer引用对象,未触发自动拆箱,此时==执行对象内存地址的比较,两个堆上独立对象的地址必然不同。
  • 第二行表达式new Integer(1000) == new Integer(1000) + new Integer(0)返回true,是运算符优先级与自动拆箱规则共同作用的标准流程:
    1. 算术运算符+的优先级高于相等判断运算符==,程序优先计算右侧表达式new Integer(1000) + new Integer(0)。算术运算会自动触发拆箱转换,将两个Integer对象转为对应的int基本类型值,计算得到int类型的1000。
    2. 右侧计算完成后,==的左右两侧分别是Integer类型的包装对象、int类型的基本值。根据Java语言规范,当相等比较的一侧为基本数值类型、另一侧为数值包装类型时,会自动将包装类型拆箱为基本类型,最终执行两个int值的相等性比较,结果为true。
  • 该行为是Java语言规范明确定义的标准行为,无未定义的实现差异。

内容的提问来源于stack exchange,提问作者Gonen I

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 06:06:05