自动装箱、自动拆箱、包装类的缓存

自动装箱和自动拆箱

自动装箱和自动拆箱就是将基本数据类型和包装类之间进行自动的互相转换。JDK1.5后,Java引入了自动装箱(autoboxing)/拆箱(unboxing)。

自动装箱

基本类型的数据处于需要对象的环境中,会自动转换成“对象”。
以Integer为例,在JDK1.5之前,这样的代码Integer i = 5;是错误的,必须通过Integer i = new Integer(5);这样的语句来实现基本数据类型转换成包装类的过程;而在JDK1.5之后,Java提供了自动装箱的功能,因此只需要Integer i = 5;这样的语句就能实现基本数据类型转换成包装类,这是因为JVM为我们执行了Integer i = Integer.valueOf(5);这样的操作。

自动拆箱

每当需要一个值时,对象会自动转换成基本数据类型,没必要显式调用intValue()等转型方法。

包装类的缓存问题

整型、char类型所对应的包装类,在自动装箱时,对于-128~127之间的值会进行缓存处理,其目的是提高效率。
缓存的原理为:如果数据在[-128,127],那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache数组中。每当自动装箱过程发生时(或者手动调用valueOf()方法),就会先判断数据是否在区间内,如果在则直接获取数组中对应的包装类对象的引用,如果不在区间内,则会通过new调用包装类的构造方法来创建对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值