当前位置: 首页 > news >正文

02_值相同、类型不同,用 equals() 比较为什么是 false?

02_值相同、类型不同,用 equals() 比较为什么是 false

场景示例

Map<Long, String> map;
Integer keyWord = 4;
if (map.containsKey(keyWord)) {// ...
}

结果:
编译通过,但 containsKey 返回 false,逻辑错误。


过程图解 🎯

传入 keyWord (类型 Integer)↓Map 内部 containsKey(Object key)↓调用 Long.equals(Object obj)↓if (obj instanceof Long) // 判断类型是不是 Long- 是:继续比较数值- 否:直接返回 false

🚫 因为 keyWord 是 Integer,不是 Long,直接返回 false!


详细源码(Long.equals)

@Override
public boolean equals(Object obj) {if (obj instanceof Long) {return value == ((Long)obj).longValue();}return false;
}

简单版总结

步骤内容结果
类型判断obj instanceof Long
比较数值不执行
返回结果false

为什么数值一样也不行?📌

虽然:

  • 4Integer
  • 4LLong
  • 数值看起来一样

类型不同equals 要求类型也必须一样,否则直接返回 false


总结一句话 🎯

equals() 比较时,类型必须相同,数值必须相同,才能返回 true。

否则,即使值相同也没用!

相关文章:

  • ipa包安装到apple手机上
  • 单片机-89C51部分:5、点亮LED
  • cocos creator使用jenkins打包流程,打包webmobile
  • python连接Elasticsearch并完成增删改查
  • 2.4java运算需要注意的细节
  • JS-OCR-demo加载本地文件
  • springboot当中的类加载器
  • C20-breakcontinue
  • AOSP Android14 Launcher3——动画核心类QuickstepTransitionManager详解
  • OneNet云平台
  • 创建laravel 12项目
  • [GXYCTF2019]Ping Ping Ping
  • 驯龙日记:用Pandas驾驭数据的野性
  • 在AWS Glue中实现缓慢变化维度(SCD)的三种类型
  • 深圳市富力达:SAP一体化管理助力精密制造升级 | 工博科技SAP客户案例
  • 织梦dedecms网站如何修改上一篇下一篇的标题字数
  • 【Flutter】Flutter + Unity 插件结构与通信接口封装
  • 光场的相位与偏振
  • 详解 Unreal Engine(虚幻引擎)
  • 开源网络入侵检测与防御系统:Snort
  • 第二艘国产大型邮轮爱达·花城号完成坞内起浮
  • 今年3月全国查处违反中央八项规定精神问题16994起
  • 商务部:将积极会同相关部门加快推进离境退税政策的落实落地
  • 印方称与巴基斯坦军队在克什米尔交火
  • 委员呼吁提高政府机构电话号码准确性,辽宁阜新回应
  • 巴印在克什米尔发生交火