自动装箱与自动拆箱

自动装箱与自动拆箱给我们开发提供了很多的便利,在jdk 1.5中,自动装箱首次被引入。而在jdk 1.5之前,如果你想要定义一个value为100的Integer对象,则需要通过new出来。

断点跟踪

为了能够了解,自动装箱与自动拆箱的过程,我们打上断点一步步跟踪看看自动装箱的过程。

自动装箱

在这里插入图片描述

接下来抬到了Integer的valueOf(int i)方法,当然我这里设置的数是在==[-128,127]==之中,一会在对范围之外的数据进行跟踪。

在这里插入图片描述

下一步,

在这里插入图片描述

紧接着我们继续执行,之后就跳出了该方法

在这里插入图片描述

于是通过跟踪代码的执行过程可以发现Integer的自动装箱是通过valueOf来执行的。

接下来,在来看看范围之外的数据的封装有什么变化

在这里插入图片描述

进入下一步可以看到依然是进入了valueOf方法,主意这个天剑i >= IntegerCache.low && i <= IntegerCache.high,意思是i>=-128&&i<=127

在这里插入图片描述

下一步,这里因为输入的数据是大于127,所以直接创建了一个对象,并把他返回

在这里插入图片描述

继续下一步,跳到了构造方法之中,也就是说此时对象已经被创建,现在在进行的就是对象的赋初值。

在这里插入图片描述

结论:

自动装箱就是jdk自己自动帮我们完成了Integer.valueOf()方法的调用

自动拆箱

打断点

在这里插入图片描述

下一步,跳入了intValue()方法。

在这里插入图片描述

再下一步,

在这里插入图片描述

继续将i赋值为128也会得到相同的结果

结论

自动拆箱就是jdk自动帮我们调用了IntValue()方法

i赋值为128也会得到相同的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值