当前位置: 首页 > 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.xdnf.cn/news/174511.html

相关文章:

  • 微信小程序自定义组件阻止click事件冒泡
  • centos7.9 - ollama 安装步骤
  • LLM应用于自动驾驶方向相关论文整理(大模型在自动驾驶方向的相关研究)
  • C++修炼:list模拟实现
  • LaTex、pdfLaTex、XeLaTex和luaLaTex的区别和联系
  • 打造企业级AI文案助手:GPT-J+Flask全栈开发实战
  • CodeGeeX 免费的国产AI编程助手
  • ros2的基本使用以及框架介绍(ros2入门基础)
  • 轻桌面tv版安卓版下载-轻桌面app最新版-水滴轻桌面官网下载
  • 当元数据遇见 AI 运维:智能诊断企业数据资产健康度
  • 【软件工程】 白盒测试简介
  • linux系统上使用nginx访问php文件返回File not found错误处理方案
  • Greenbone(绿骨)开源GVM容器docker部署和汉化介绍
  • rocketmq一些异常记录
  • Linux中线程池的简单实现 -- 线程安全的日志模块,策略模式,线程池的封装设计,单例模式,饿汉式单例模式,懒汉式单例模式
  • 自然语言处理之机器翻译:注意力机制在低资源翻译中的突破与哲思
  • MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep
  • 时空特征如何融合?LSTM+Resnet有奇效,SOTA方案预测准确率超91%
  • 2025系统架构师---解释器架构风格‌
  • 单例模式:确保类的唯一实例
  • 类间@符号装饰器
  • php:实现窗口选择数据,并返回给主页面
  • Alibaba Druid 完整配置与 Keepalive 优化指南
  • 前端分页与瀑布流最佳实践笔记 - React Antd 版
  • 前端-介绍一个好用的波浪背景生成器
  • 《操作系统真象还原》第十章(1)——输入输出系统
  • Java 设计模式
  • ADS基本操作之AC仿真
  • rt-linux下的D状态的堆栈抓取及TASK_RTLOCK_WAIT状态
  • AVFormatContext 再分析