Java自动拆装箱机制

自动拆装箱

JDK 1.5 中增加了基本类型和包装类之间的自动拆装箱机制。

包装类拆箱

Integer 举例,它是 int 型的包装类,拆箱的本质是执行了 Integer.intValue() 方法,比如以下代码:

int i1 = 100;
Integer i2 = 100;

System.out.println(i1 == i2); // 输出true

比较 i1 和 i2 时,i2 执行了 intValue() 方法变成 int 型的值然后再去和 i1 进行比较,因此输出结果是 true

Integer in = new Integer(100);
int i = in;

自动拆箱机制也使得可以直接将 Integer 对象直接赋值给基本数据类型 int ,因为 in 会自动拆箱为 int 型数 100 然后再赋值给 i 。

基本数据类型自动装箱

自动装箱的本质是执行了 Integer.valueOf(int) 方法,比如:

Integer in = 100; // #1

public static void method(Integer i){}
int i = 100;
method(i); // #2 

#1 我们可以直接将 int 型的值直接赋值给包装类对象,这里就是用了自动装箱,执行了 in.valueOf(100) 的操作

#2 在调用方法的时候,可以用 int 型参数代替 Integer 类参数,也是因为自动装箱机制。

总结

八种基本数据类型都有自动拆装箱机制,包装类中含有xxxValue()方法和valueOf()方法。

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean


在需要包装类时,基本数据类型就会自动装箱,当需要基本数据类型时,包装类对象就会自动拆箱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值