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

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

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

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

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

相关推荐
wear工程师4 小时前
MySQL 索引失效别再背八股:看懂 EXPLAIN,面试官追问也不慌
mysql·面试
极光代码工作室4 小时前
基于SpringBoot的订单管理系统
java·springboot·web开发·后端开发
xiaoduzi19914 小时前
ConcurrentHashMap学习
java·学习
折哥的程序人生 · 物流技术专研5 小时前
《Java 100 天进阶之路》第53篇:volatile与JMM(2026版)
java·volatile·内存屏障·可见性·java内存模型·jmm·java100天进阶
米饭不加菜5 小时前
使用万用表判断三极管(BJT)好坏
java·开发语言
Maynor9965 小时前
AI Coding 零基础实战教程|第五部分:完整项目案例实操
java·前端·人工智能·claude code·ai coding
小猿备忘录5 小时前
JVM 调优完全手册(Java 8 版)
java·开发语言·jvm
生戎马5 小时前
Tomcat Container容器之Engine:StandardEngine _
java·tomcat
zhangjw346 小时前
第29篇:Java伪共享与对象分配:并发性能优化的关键
java·开发语言·性能优化
宠友信息6 小时前
内容社区源码多端数据协议与 Spring Boot 状态流转实现思路
java·spring boot·websocket·uni-app