news 2026/5/19 11:45:38

128陷阱

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
128陷阱

总结:****Integer包装类在实现自动装箱时,为了节省内存和提升性能,设置了缓存数组。该缓存数组在Integer类加载时预创建了从-128到127共256个Integer对象。当使用自动装箱或调用Integer.valueOf()方法时,如果数值在-128到127范围内,则直接返回缓存中的对象;如果数值超出此范围,则创建新的Integer对象。

128陷阱

128陷阱是原来典型的面试题,考察了Integer底层的逻辑, 典型的形式是下面代码的情况:

Integera1=127;Integera2=127;Integera3=128;Integera4=128;System.out.println(a1==a2);System.out.println(a3==a4);

**没听说过 128陷阱的同学,肯定觉得 完成自动装箱之后,都是new Integer()的对象,内存地址肯定不同 所以
**false false;
但是实际情况如下:

我们会分析上面的情况,在第二部分我们讲到了:

Integera1=127;Integera1=Integer.valueOf(127);

上面的情况1是Integer内部会自动实现情况2的,所以我们会查看Integer.valueOf(127)的源码。





上面的代码是提出了high是127,low是-128。
cache[] 是大小为256的数组解释如下:


解释:

if(i>=IntegerCache.low&&i<=IntegerCache.high)

当输入的值大于等于-128小于等于127的时候返回

returnIntegerCache.cache[i+(-IntegerCache.low)];

接下来看cache数组中存的是什么:

我们可以看到 j = -128 cache是256大小的数组,而且每一个索引对应的是一个new Integer()对象,所以cache数组中存的是已经定义好的从(-128,127)的Intger对应的值。
所以在一次分析最初的问题,100小于127,200大于127 所以 小于127是从数组中 得到的Integer对象指向相同的内存地址,所以前两个返回true,200是返回的新的Integer对象,所以内存地址不同、

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 3:19:15

【课程设计/毕业设计】基于springboot的旅游网站系统的设计与实现基于springboot的旅游管理系统,在线旅游管理系统【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/13 12:35:51

城市仿真软件:CityEngine_(10).建筑物与环境细节优化

建筑物与环境细节优化 在城市仿真软件中&#xff0c;建筑物与环境的细节优化是至关重要的一步&#xff0c;它直接影响到最终场景的真实感和用户体验。本节将详细介绍如何在CityEngine中进行建筑物与环境的细节优化&#xff0c;包括纹理优化、模型优化、光照优化以及环境效果的添…

作者头像 李华
网站建设 2026/5/15 8:41:10

城市仿真软件:CityEngine_(11).城市仿真案例分析

城市仿真案例分析 在前一节中&#xff0c;我们介绍了CityEngine的基本功能和使用方法。接下来&#xff0c;我们将通过具体的案例分析&#xff0c;进一步探讨如何利用CityEngine进行城市仿真。本节将涵盖以下几个方面&#xff1a;案例背景介绍数据准备模型构建规则文件编写仿真运…

作者头像 李华
网站建设 2026/5/17 8:18:45

Python RPA解放Excel生产力

一、环境准备&#xff1a;3行代码搭建自动化工具箱1. 核心库安装必装3件套&#xff1a;pandas&#xff1a;数据处理“瑞士军刀”&#xff0c;1行代码完成数据清洗&#xff1b;openpyxl&#xff1a;轻量级Excel写入工具&#xff0c;适合生成基础报表&#xff1b;xlwings&#xf…

作者头像 李华