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

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

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

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

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

相关推荐
货拉拉技术1 天前
网关 MCP 转换技术:从实现到平台落地
java·架构·mcp
艾菜籽1 天前
SpringMVC练习:加法计算器与登录
java·spring boot·spring·mvc
浮游本尊1 天前
Java学习第25天 - Spring Cloud Alibaba微服务生态
java
Cg136269159741 天前
Super的详解
java
毕设源码-朱学姐1 天前
【开题答辩全过程】以 便利店库存管理系统为例,包含答辩的问题和答案
java·eclipse
Nero181 天前
代码随想录二刷第九天 | 232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项
java
飞哥的AI笔记1 天前
热题精讲:字节/阿里面试真题-如何设计AI Agent的负载均衡?附完整思路
面试
泉城老铁1 天前
tomcat 部署springboot,线程经常断开导致数据库连接池关闭,如何解决
java·spring boot·后端
Nero181 天前
代码随想录二刷第八天 | 28. 实现 strStr()、459.重复的子字符串
java
Le1Yu1 天前
配置管理的配置与拉取、热更新的配置、动态路由
java