自动拆箱与装箱(面试常背)

自动拆箱与装箱

自动装箱: 就是将基本数据类型自动转换成对应的包装类。
自动拆箱:就是将包装类自动转换成对应的基本数据类型。

基本数据类型:

共有八种,基本类型可以分为三类:
1.字符类型 char
2.布尔类型 boolean
3.数值类型 byte、short、int、long、float、double。

包装类:

基本数据类型不是面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类,使得基本数据类型具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作
在这里插入图片描述

自动装箱与拆箱的原理:

自动装箱:
都是通过包装类的valueOf()方法来实现的.
自动拆箱:
都是通过包装类对象的xxxValue()来实现的(如booleanValue()、longValue()等)。
在这里插入图片描述

举个例子:
在这里插入图片描述

a == b反编译后,实际上是a == b.intValue()
在这里插入图片描述

可能出现的问题:

1.在包装类中,Integer类型比较特殊,其缓存值为-128~127,虽然 -128 到 127 之间的数字可以使用==,但是这个范围之外还是需要使用 equals 比较
在这里插入图片描述

2.如果包装类对象为 null ,那么自动拆箱时就有可能抛出 NullPointerException
在这里插入图片描述

总结:

1.自动装箱: 就是将基本数据类型自动转换成对应的包装类。
2.自动拆箱:就是将包装类自动转换成对应的基本数据类型。
3.包装类比较时虽然 -128 到 127 之间的数字可以使用==,但是这个范围之外还是需要使用 equals 比较
4.对于不确定的包装类型,一定要对NULL的情况做检验和判断,避免出现 NullPointerException


上一篇 >>>>> == 和 equals 的区别(面试常背)

That’s it;

总有人间一两风,填我十万八千梦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值