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

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

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

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

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

相关推荐
zjneymar2 分钟前
Mybatis的动态sql
java·sql·mybatis
花月C6 分钟前
基于WebSocket的 “聊天” 业务设计与实战指南
java·网络·后端·websocket·网络协议
hongtianzai7 分钟前
Laravel7.x十大核心特性解析
java·c语言·开发语言·golang·php
计算机学姐13 分钟前
基于SpringBoot的校园二手交易系统
java·vue.js·spring boot·后端·spring·tomcat·intellij-idea
夕珩14 分钟前
Java 排序算法详解:冒泡排序、选择排序、堆排序
java·算法·排序算法
软件测试君16 分钟前
自动化测试路线图之自动化测试完整指南
自动化测试·软件测试·测试工具·面试·职场和发展·单元测试·职场经验
9523619 分钟前
初识多线程
java·开发语言·jvm·后端·学习·多线程
hongtianzai23 分钟前
Laravel9.X核心特性全解析
android·java·数据库
小陈工26 分钟前
2026年3月22日技术资讯洞察:数据库优化进入预测时代,网络安全威胁全面升级
java·开发语言·数据库·python·安全·web安全·django
小胖java27 分钟前
养老院管理系统
java·spring boot