0x01 包装类
对基本数据类型进行包装,把基本数据类型包装一个对象,从而获取更加强大的功能
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer(内部覆盖到了toString方法,所以打印出来的不是地址而是具体的值) |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
0x02 装箱操作
1 | Integer num1 = new Integer(10); //方法一 |
在类中,成员变量一般使用包装类,在方法中一般使用基本数据类型。
方法中,基本数据类型存储来栈中,而包装类存储在堆中。
0x03 拆箱操作
把包装类转回基本数据类型
1 | Integer num = new Integer(10); //装箱 |
类似的还有doubleValue()、longValue()等等
0x04 自动装箱与自动拆箱
自动装箱
可以直接把一个基本数据类型的值赋值给包装类对象1
Integer num = 20;
自动拆箱
可以直接把一个包装类对象赋值给基本数据类型的变量1
int num = Integer.valueOf(10);
0x05 包装类valueOf的缓存设计
以Integer为例子,如果数值在-128到127之间(不同的包装类数值不同),会使用缓存机制,直接从之前创建的地方获取,超出这个范围则不实用缓存,直接创建新的地址。