【Java】一个关于装箱的某里面试题

题目:

java 复制代码
package csdn;



public class test2 {
    public static void main(String[] args)  {
        Integer a=100;
        Integer b=100;
        System.out.println(a==b);
        Integer c=200;
        Integer d=200;
        System.out.println(c==d);

    }
}

求这个代码的输出结果。

答案:

第一个为true,第二个为false.

我们来看一下这个题,我们这里发生了装箱操作,所以我们得知道装箱过程是什么样的,我们来看一下反编译:

我们可以看到底层其实是调用了valueOf()这个方法,那我们去Integer类中找一下这个方法:

那也就是说,我们在进行自动装箱的时候,人家在底下会调用这个方法来帮我们进行装箱。

那我们再回到这个题目,这个题目在给a和b赋值的时候发生了装箱,装箱会调用valueOf()方法,那我们来理解一下这个方法:

因为a和b都是100,在这个范围之内,所以返回的都是相同的值,所以相等。

因为c和b是200,不在这个范围内,所以返回的都是new的对象,等号两边都是引用类型,比较的不是c和d的值,而是类似于地址的东西,所以不相等。

相关推荐
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 高校食堂餐饮管理系统的设计与实现为例,包含答辩的问题和答案
java
过期动态1 小时前
Java开发中的@EnableWebMvc注解和WebMvcConfigurer接口
java·开发语言·spring boot·spring·tomcat·maven·idea
摇滚侠1 小时前
IDEA 定义返回值快捷键
java·ide·intellij-idea
毕设源码-郭学长1 小时前
【开题答辩全过程】以 高校考勤管理系统为例,包含答辩的问题和答案
java·eclipse
A懿轩A2 小时前
【Maven 构建工具】从零到上手 Maven:安装配置 + IDEA 集成 + 第一个项目(保姆级教程)
java·maven·intellij-idea
野犬寒鸦2 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
我爱娃哈哈2 小时前
SpringBoot + Flowable + 自定义节点:可视化工作流引擎,支持请假、报销、审批全场景
java·spring boot·后端
XiaoFan0122 小时前
将有向工作流图转为结构树的实现
java·数据结构·决策树
小突突突3 小时前
浅谈Java中的反射
java·开发语言
Anastasiozzzz3 小时前
LeetCode Hot100 295. 数据流的中位数 MedianFinder
java·服务器·前端