JAVA自动装箱与拆箱

自动装箱是将基本数据类型转换为对应的包装类对象,如int转Integer,而自动拆箱则是包装类对象转换为基本数据类型。这个过程在赋值和方法调用时常见,例如IntegeriObject=3;和intiPrimitive=iObject;在Java5及以后版本,这些转换由编译器自动处理。

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

装箱与拆箱定义:基本数据类型和包装类之间可以自动地相互转换

理解:装箱就是自动将基本数据类型转换为封装类型,拆箱就是自动将封装类型转换为基本数据类型。

 类型封装器(包装类

 

  • 自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()等这类的方法将对象转换成原始类型值。
  • 自动装箱是将boolean值转换成Boolean对象,byte值转换成Byte对象,char转换成Character对象,float值转换成Float对象,int转换成Integerlong转换成Longshort转换成Short,自动拆箱则是相反的操作。

何时发生

1 赋值时

这是最常见的一种情况,在Java 1.5以前需要手动地进行转换才行,而现在所有的转换都是由编译器来完成

//before autoboxing
Integer iObject = Integer.valueOf(3);
Int iPrimitive = iObject.intValue()

//after java5
Integer iObject = 3; //autobxing - primitive to wrapper conversion
int iPrimitive = iObject; //unboxing - object to primitive conversion

2 方法调用时

这是另一个常用的情况,当在方法调用时,可以传入原始数据值或者对象,同样编译器会帮我们进行转换。

public static Integer show(Integer iParam){
   System.out.println("autoboxing example - method invocation i: " + iParam);
   return iParam;
}

//autoboxing and unboxing in method invocation
show(3); //autoboxing
int result = show(3); //unboxing because return type of method is Integer

show方法接受Integer对象作为参数,当调用show(3)时,会将int值转换成对应的Integer对象,这就是所谓的自动装箱,show方法返回Integer对象,而int result = show(3);resultint类型,所以这时候发生自动拆箱操作,将show方法的返回的Integer对象转换成int值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EleanorSch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值