用来封装一个基本类型值,有时需要把基本类型值,当做引用类型来使用。例:
void f(Object obj) { } // f(6)无法直接传入一个int类型的整数6 f(new Integer(6))
一、对应的基本类型的包装类
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
二、Integer
2.1 创建对象
2.1.1 new Integer(6)
2.1.2 Integer.valueOf(6)
Integer类中,有一个 Integer 对象缓存数组,其中缓存了 256 个对象,封装的值范围 [-128, 127]
指定范围内的值,直接访问缓存对象
指定范围外的值,新建对象
2.2 字符串解析成 int
Integer.parseInt("255") 255
Integer.parseInt("11111111", 2) 255
Integer.parseInt("ff", 16) 255
Integer.parseInt("377", 8) 255
2.3 int整数,转成其他进制字符串
Integer.toBinaryString(255) "11111111"
Integer.toOctalString(255) "377"
Integer.toHexString(255) "ff"
三、自动装箱,拆箱
3.1 自动装箱
基本类型值,自动封装成包装类型
Integer a = 6;
编译器编译成:
Integer a = Integer.valueOf(6);
3.2 自动拆箱
自动取出包装对象中封装的值
int i = a;
编译器编译成:
int i = a.intValue();
a = a + 1;
编译器编译成:
a = Integer.valueOf(a.intValue() + 1);
注:自动拆箱,要当心 null 值
四、BigDecimal、BigInteger
BigDecimal 做精确的浮点数运算
BigInteger 做超大的整数运算
4.1 创建对象
BigDecimal.valueOf(2)
4.2 方法
add(BigDecimal bd)
subtract(BigDecimal bd)
multiply(BigDecimal bd)
divide(BigDecimal bd)
divide(BigDecimal bd,保留位数,舍入方式)
setScale(保留位数,舍入方式)