声明了Integer类型的两个数值并且值相等,但为什么返回了false?

简介: 声明了Integer类型的两个数值并且值相等,但为什么返回了false?

今天在写代码的时候发现了一个特别奇怪的问题

Integer id = 131;
// 传递过来的一个值 parentId 类型为Interger 也等于 131
System.out.printIn(id == parentId)  
值竟然等于 false?!!!

抱着不相信自己代码Integer的类型写错的心态。

仔细打了几遍断点发现,确实进不去。

也查看了各种类型的声明dto发现也都是正确的。

那么这是为什么呢?

查阅相关文档才发现。

原来Integer有个装箱跟拆箱的操作。
当数值范围大于[-128,127],比如a= 12,b = 12的时候
这时候 a==b 的值就是true。
可是当a = 131. b = 131 的时候,这时候的值则是false。

因为超出范围,Integer会去重新new一个对象。比对的则不是值

比对的是引用地址。

所以才会出现等于false的情况。

```java
这种时候,建议从一开始使用equals()来进行比较。


目录
相关文章
|
JSON Kubernetes Docker
k8s 集群中运行 docker registry 镜像仓库
k8s 集群中运行 docker registry 镜像仓库
1840 0
|
前端开发 开发者
Warning: [antd: Breadcrumb] `Breadcrumb.Item and Breadcrumb.Separator` is deprecated. Please use `it
Warning: [antd: Breadcrumb] `Breadcrumb.Item and Breadcrumb.Separator` is deprecated. Please use `it
455 1
|
设计模式 Java
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)
377 2
|
人工智能 自然语言处理 Serverless
方案测评 | AI大模型助力客户音频对话分析
该方案利用阿里云的函数计算、对象存储及智能对话分析技术,实现客户对话的自动化分析,精准识别客户意图,评估服务互动质量,提供数据驱动的决策支持。其特点包括智能化分析、数据驱动决策、低成本、自动化处理、精准识别、实时反馈及成本效益。方案适用于提升企业服务质量与客户体验,尤其在处理海量客户对话数据时表现突出。
|
机器学习/深度学习 算法 计算机视觉
探索SVM(支持向量机)的奥秘:从原理到实践
探索SVM(支持向量机)的奥秘:从原理到实践
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
人工智能 小程序 IDE
编一个自己的万年历
编一个自己的万年历
316 2
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
351 0
|
人工智能 决策智能 C++
【AI Agent教程】【MetaGPT】案例拆解:使用MetaGPT实现“狼人杀“游戏(1)- 整体框架解析
【AI Agent教程】【MetaGPT】案例拆解:使用MetaGPT实现“狼人杀“游戏(1)- 整体框架解析
1423 1
|
前端开发 开发者
Jetpack MVVM 常见错误用法(一) 拿Fragment当LifecycleOwner
Jetpack 的 MVVM 本身没有错,错在开发者的某些使用不当。本系列将分享那些 AAC 中常见的错误用法,指导大家打造更健康的应用架构
728 0