关于Integer类的一个有趣的面试问题

相信很多人觉得答案是false,false,因为Integer是一个类,把int类型的数据传给Integer类型的数据会创建一个对象,而a,b,c,d作为引用指向的是不同的地址,所以判断相同得到的结果应该是false

但这个想法就正中下怀了,实际上得到的结果是true,false

为什么呢?因为将int类型的数据转换成Integer类型需要调用Integer类中的静态方法valueOf,而valueOf方法的内部实现是这样的:

简单解释是,在-128到127范围内的int类型的数据要进行转换,直接调用数组中已经存储的数据即可,不在这个范围内的才重新创建新的对象,所以127在这个范围内,引用就直接指向数组中已有的数据即可,所以引用的值相同,而128不在这个范围,就需要重新创建对象,所以两个引用指向的对象不同,值也不同

相关推荐
小幸运24818 分钟前
FastAPI异步请求 vs 同步请求:一个电商订单系统
面试
zhougl99624 分钟前
主流漏洞扫描工具
java
一只小阿乐1 小时前
java 语法学习 1
java·开发语言·学习
2601_962073971 小时前
苍穹外卖-day07(Spring Cache & 购物车业务逻辑)
java·后端·spring
顶点多余1 小时前
算法哪些事儿---2
java·开发语言
quarter-moon2 小时前
行研高质量学习资料+面试资料
面试·金融·行研
深入云栈2 小时前
CompleteFuture VS CompletableFuture:Netty 为何自研 Future
java·架构
choumou_M2 小时前
SpringBoot_7:用户资源的上传与修改
java·spring boot·后端
user_admin_god2 小时前
一体化数据归集接口详细设计说明
java·大数据·spring boot·后端·spring
LlmCraft|大模型工程实践3 小时前
08. Docker Compose 一键编排:多容器应用的指挥家
java·spring cloud·eureka