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

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

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

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

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

相关推荐
是小蟹呀^6 小时前
Spring Security + JWT 面试题整理
java·jwt·springsecurity
liang_jy7 小时前
内存管理(二)—— 覆盖与交换
面试·操作系统
触底反弹7 小时前
Vibe Coding 不写 Git,等于悬崖边飙车
人工智能·git·面试
liang_jy8 小时前
内存管理(一)—— 内存管理的概念
面试·操作系统
spencer_tseng8 小时前
Redis + Nacos.bat
java·windows·dos
troyzhxu9 小时前
列表查询的 GraphQL —— 一行代码终结你的 if-else 地狱!
java·springboot·graphql
叩码以求索9 小时前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
孫治AllenSun10 小时前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm
好好沉淀11 小时前
@NotBlank(message = “{xxx}“) 注解中花括号的含义
java