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

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

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

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

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

相关推荐
C+++Python4 小时前
C++ 进阶学习完整指南
java·c++·学习
zhangjw345 小时前
第11篇:Java Map集合详解,HashMap底层原理、哈希冲突、JDK1.8优化、遍历方式彻底吃透
java·开发语言·哈希算法
Aphasia3115 小时前
CORS、CSRF和XSS
面试
还得是你大哥5 小时前
Java互联网医院管理系统源码SpringBoot
java·spring boot·vue
木斯佳5 小时前
前端八股文面经大全:腾讯WXG暑期前端一面(2026-05-15)·面经深度解析
前端·面试·笔试
阿维的博客日记6 小时前
怎么用ThreadLocal解决用户的登录上下文
java·juc
张元清6 小时前
useEffect 之外:专门处理异步、深比较和 SSR 的 Effect Hook
前端·javascript·面试
Dicky-_-zhang6 小时前
容器编排实战:Docker与Kubernetes对比选型与落地实践
java·jvm
benpaodeDD6 小时前
视频10,11,12,13——java程序的加载与执行,安装jdk
java·开发语言
数字化顾问6 小时前
(122页PPT)数字化架构的演进和治理(附下载方式)
java·运维·架构