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

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

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

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

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

相关推荐
cui_hao_nan2 分钟前
设计模式——模板方法
java·设计模式
小吕学编程3 分钟前
HttpServletRequest常用方法
java·http
在未来等你3 分钟前
Java并发编程实战 Day 11:并发设计模式
java·设计模式·多线程·并发编程·threadlocal·生产者消费者·读写锁
李少兄15 分钟前
解决 idea提示`SQL dialect is not configured` 问题
java·sql·intellij-idea
前端小白佬17 分钟前
【JS】防抖(debounce)和节流(throttle)
前端·面试
BreezeDove21 分钟前
IDEA安装&迁移IDEA配置数据位置
java·ide·intellij-idea
前端小白佬26 分钟前
【JS】事件传播--事件捕获/冒泡
javascript·面试
太阳之神aboluo26 分钟前
压测软件-Jmeter
java·运维·jmeter
编程乐学(Arfan开发工程师)38 分钟前
42、响应处理-【源码分析】-浏览器与PostMan内容协商完全适配
java·spring boot·后端·测试工具·lua·postman
汪子熙43 分钟前
深入解析互斥锁(Mutex):并发编程中的关键同步机制
后端·面试