【JAVA基础篇】彻底搞懂拆箱装箱

本文详细解析了Java中装箱与拆箱的概念,解释了基本数据类型与包装器类型之间的转换过程,以及自动装箱拆箱的实现机制。通过实例展示了不同情况下的对象比较与操作符使用,帮助理解包装器类型的内存管理和运算特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是装箱拆箱?

Java有8种基本数据类型,并且为这8种类型提供了包装器类型。比如说int类型的包装器类型是Integer。

装箱是指将基本数据类型转换成对应的包装器类型。拆箱是指将包装器类型转换基本数据类型。

Integer i = 10;  //自动装箱
int n = i;   //自动拆箱

装箱拆箱是如何实现的

在装箱的时候自动调用的是Integer的valueOf(int)方法。而在拆箱的时候自动调用的是Integer的intValue方法。

也就是说Integer i = 10实际上是Integer.valueOf(10),int n = i实际上是i.intValue()

面试中的相关问题

    	Integer integer = 1;
    	Integer integer1 = new Integer(1);//包装器类型的构造方法必然会创建一个新的对象
    	Integer integer3 = 1;
    	int i = 1;
    	System.out.println(integer==integer3);//Integer.valueOf会对-128-127的数做缓存,所以integer和integer3指向同一个对象
    	System.out.println(integer==integer1);//两个操作是引用类型时,这种情况不会触发拆箱,==是比较两个对象的内存地址,结果是false
    	System.out.println(integer==i);//,integer会拆箱成int类型,结果是true
    	System.out.println(integer<integer1);//integer和integer1都会拆箱成int类型,结果是false

注意:除了==或者!=操作两个包装器实例的情况是比较对象内存地址外,其他的操作符操作包装器类型的话都会触发自动拆箱。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值