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

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

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

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

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

相关推荐
NAGNIP1 小时前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
NAGNIP1 小时前
一文搞懂激活函数!
算法·面试
前端Hardy6 小时前
面试官:JS数组的常用方法有哪些?这篇总结让你面试稳了!
javascript·面试
日月云棠7 小时前
各版本JDK对比:JDK 25 特性详解
java
牛奶7 小时前
React 底层原理 & 新特性
前端·react.js·面试
牛奶7 小时前
ts随笔:面向对象与高级类型
前端·面试·typescript
牛奶7 小时前
React 基础理论 & API 使用
前端·react.js·面试
SuperEugene8 小时前
从 Vue2 到 Vue3:语法差异与迁移时最容易懵的点
前端·vue.js·面试
用户8307196840828 小时前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide8 小时前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code