当前位置: 首页 > 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。

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

http://www.dtcms.com/a/158659.html

相关文章:

  • 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
  • Spark SQL开发实战:从IDEA环境搭建到UDF/UDAF自定义函数实现
  • Maven下载aspose依赖失败的解决方法
  • BeeWorks Meet更适合企业内部使用的原因
  • Linux中线程池的简单实现 -- 线程安全的日志模块,策略模式,线程池的封装设计,单例模式,饿汉式单例模式,懒汉式单例模式
  • streamlit实现非原生的按钮触发效果 + flask实现带信息的按钮触发
  • 前端浏览器窗口交互完全指南:从基础操作到高级控制
  • 论文导读 - 基于大规模测量与多任务深度学习的电子鼻系统实现目标识别、浓度预测与状态判断
  • [计算机科学#3]:布尔逻辑 (计算机数学基础)
  • 【中级软件设计师】编译和解释程序的翻译阶段、符号表 (附软考真题)
  • Lua 第10部分 模式匹配