从JDK 1.5开始Java增加为每种基本数据类型都提供了对应的包装器类型,具有了装箱和拆箱的特性。
装箱
: 将基本数据类型转换成引用类型拆箱
: 与装箱相反,将引用类型转换成基本数据类
装箱示例
:
1 | Integer c = 200 ; //Integer.valueOf(int i) |
拆箱示例
:
1 | int a = 200 ; //Integer.intValue(); |
关于拆箱
引用类.valueOf(类型) 特性
在基本数据类型的装箱操作上面:
Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现是类似的,但是不完全相同。
以Integer为例:
1 | public static Integer valueOf(int i) { |
Double、Float的valueOf方法的实现是类似的。
以Double为例:
1 | public static Double valueOf(double d) { |
根据上面的源代码就会发现,在Integer、Short、Byte、Character、Long类的valueOf方法会使用Cache类,当值在一定范围内,不返回new对象的值,而采用缓存的值。通常默认值在-128~127之间。
示例代码
1 | package com.devnp.core; |
运行结果:
1 | true |
基本数据类型与引用类型
*int(4字节) Integer
*byte(1字节) Byte
*short(2字节) Short
*long(8字节) Long
*float(4字节) Float
*double(8字节) Double
*char(2字节) Character
*boolean(未定) Boolean