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

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

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

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

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

相关推荐
哈里谢顿8 小时前
0305乒乓xx agent运维开发岗面试记录
面试
哈里谢顿8 小时前
0309面试二总结
面试
哈里谢顿8 小时前
0309面试一记录
面试
哈里谢顿8 小时前
0310面试二记录
面试
哈里谢顿9 小时前
0310面试记录一
面试
boooooooom12 小时前
讲清 Proxy + effect + track/trigger 流程
javascript·vue.js·面试
架构师沉默12 小时前
别又牛逼了!AI 写 Java 代码真的行吗?
java·后端·架构
豆苗学前端12 小时前
彻底讲透浏览器缓存机制,吊打面试官
前端·javascript·面试
zone773912 小时前
006:RAG 入门-面试官问你,RAG 为什么要切块?
后端·算法·面试
swipe12 小时前
箭头函数与 this 面试题深度解析:从原理到实战
前端·javascript·面试