【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的值,而是类似于地址的东西,所以不相等。

相关推荐
码头整点薯条几秒前
对接第三方服务踩坑:属性大小写不匹配导致数据解析失败,一个注解搞定!
java
Wpa.wk几秒前
性能测试工具 - JMeter工具组件介绍一
java·经验分享·测试工具·jmeter·性能测试
虫小宝2 分钟前
个微iPad协议场景下Java后端的协议解析异常排查与问题定位技巧
java·svn·ipad
程序媛徐师姐8 分钟前
Java基于微信小程序的鲜花销售系统,附源码+文档说明
java·微信小程序·鲜花销售小程序·java鲜花销售小程序·鲜花销售微信小程序·java鲜花销售系统小程序·java鲜花销售微信小程序
菜还不练就废了16 分钟前
26.1.12|JavaSE复盘补充,整到哪里算哪里(一)
java·开发语言
摇滚侠20 分钟前
Kong API 列表加 curl 访问案例 通过 curl 修改 router 的 method
java·kong
ShuiShenHuoLe24 分钟前
maven配置阿里源
java·数据库·maven
H_z_q240125 分钟前
RHCE的时间服务器与NTP、chrony
java·运维·服务器
悟空码字32 分钟前
三步搞定短信验证码!SpringBoot集成阿里云短信实战
java·spring boot·后端
码农爱学习32 分钟前
C语言结构体对齐是怎么计算
java·c语言·数据库