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

128陷阱

首先我们了解一下关于包装器类型

 java是面向对象的语言,但基本类型并不是面向对象的,从而出现了包装器类型,并且包装器添加了更多的属性和方法。如我们在使用集合类型Collection的时候就一定要使用包装类型而非基本类型,它相当于将基本类型"包装起来",使它具有了对象的性质,丰富了基本类型的操作。并且包装器类型可以调用方法。

拆箱

        拆箱---(xxxValue()代码内部实现) 包装类转化为基本数据类型 如下图两行代码的意思是一样的

装箱

        装箱--(valueOf()代码内部实现) 基本类转化为包装类  如下图两行代码的意思是一样的

一、什么是128陷阱,如下图所示

在上面的代码运行中发现当a和b是127的时候输出是true,当a和b是128的时候输出的是false,这里就涉及到了128陷阱

二、128陷阱详解

整数缓存机制: Java 对于值在 -128 到 127 之间的 Integer 对象会自动缓存。这意味着如果你使用自动装箱创建了一个 Integer 对象,并且该值在 -128 到 127 之间,Java 会使用相同的实例。他们指向的是同一处地址

超出缓存范围的对象: 对于超出 -128 到 127 范围的值,Integer 对象不会被缓存,每次都会创建新的对象。因此,即使两个 Integer 对象的值相同,它们也不会是同一个实例。也就是他们指向的地址是不一样的。

三、如何避免128陷阱

在上面我们了解到当值超出了-128~127范围内,就会创建一个新的对象,执行的位置不一样,那么我们要避免128陷阱的话就应该不应该用“==”,因为==比较的是地址,应该用equals,equals比较的具体的值

理解“==”和equals的区别:

  • 使用 == 仅用于比较基本类型和检查对象引用是否相同。(通俗来说就是比较地址指向)
  • 使用 equals() 方法来比较对象的值是否相等。(通俗来说就是比较值)

可以看下面代码进行验证:

总结

128陷阱是 Java 开发中容易遇到的一个问题,尤其在处理 Integer 对象的比较时。理解整数缓存机制和正确使用 equals() 方法是避免这个陷阱的关键。

http://www.lryc.cn/news/532334.html

相关文章:

  • PromptSource和LangChain哪个更好
  • 构成正方形的数量:算法深度剖析与实践
  • Redis持久化-秒杀系统设计
  • 音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
  • OpenAI 实战进阶教程 - 第六节: OpenAI 与爬虫集成实现任务自动化
  • SpringUI Web高端动态交互元件库
  • 解密企业安全密码:密钥管理服务如何重塑数据保护?
  • 基于keepalived+GTID半同步主从复制的高可用MySQL集群
  • 图片PDF区域信息批量提取至Excel,基于QT和阿里云api的实现方案
  • Java 大视界 -- Java 大数据在智能教育中的应用与个性化学习(75)
  • 从零手写Spring IoC容器(二):bean的定义与注册
  • 《大模型面试宝典》(2025版) 发布了
  • AWS门店人流量数据分析项目的设计与实现
  • 出租车特殊计费表算法解析与实现
  • 文档解析技术:如何高效提取PDF扫描件中的文字与表格信息?
  • 【2】高并发导出场景下,服务器性能瓶颈优化方案-异步导出
  • 【DeepSeek论文精读】6. DeepSeek R1:通过强化学习激发大语言模型的推理能力
  • frida 通过 loadLibrary0 跟踪 System.loadLibrary
  • 【2025最新计算机毕业设计】基于SSM的智能停车场管理系统【提供源码+答辩PPT+文档+项目部署】(高质量源码,可定制,提供文档,免费部署到本地)
  • 【含文档+PPT+源码】Python爬虫人口老龄化大数据分析平台的设计与实现
  • 文本生图的提示词prompt和参数如何设置(基于Animagine XL V3.1)
  • 快速提取Excel工作簿中所有工作表的名称?
  • 【紫光同创PG2L100H开发板】盘古676系列,盘古100Pro+开发板,MES2L676-100HP
  • Node.JS 版本管理工具 Fnm 安装及配置(Windows)
  • labview通过时间计数器来设定采集频率
  • 汇编JCC条件跳转指令记忆
  • HTML排版标签、语义化标签、块级和行内元素详解
  • 【回溯+剪枝】单词搜索,你能用递归解决吗?
  • 《深度揭秘LDA:开启人工智能降维与分类优化的大门》
  • Linux(CentOS)安装 MySQL