Java 中的包装类
Java提供了两大类数据类型,
基本类型
与引用类型
,使用基本类型在于效率,但是缺少像引用数据类型一样的丰富API。
Java提供了针对基本数据类型的包装类,以提供更加便捷的操作功能,包装类就是把基本数据类型包装成对应的引用数据类型。
一、包装类型
基本数据类型 | 包装类(java.lang包) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
二、装箱与拆箱
装箱: 基本数据类型转为包装类对象,是为了使用专门为对象设计的 API 和特性。
Integer integer = new Integer(123);
Integer integer1 = Integer.valueOf(123);
拆箱: 把包装类对象转为基本数据类型。
Integer integer = new Integer(123);
int i = integer.intValue();
三、自动装箱与拆箱
JDK1.5 之后,可以自动装箱与拆箱。
注意: 只能与自己对应的类型之间才能实现自动装箱与拆箱。
/**
* 自动装箱与拆箱
*/
Integer i = 5; // 自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
System.out.println(i); // 10
四、字符串与基本类型转换
- 把基本数据类型转为字符串
/**
* int 转 String 类型
*/
int a = 10;
String s = String.valueOf(a);
String s1 = a + "";
String s2 = Integer.toString(10);
- 把字符串转为基本数据类型
String string ="12345";
// 将字符串转为基本类型
int i = Integer.parseInt(string);
// 把字符串转为 Integer, 自动拆箱为 int 类型
int i2 = Integer.valueOf(string);
五、包装类对象的缓存问题
包装类的数据在缓存数值范围内时,直接从内存中取出对象,超过范围会创建新的对象
包装类 | 缓存对象 |
---|---|
Byte | -128~127 |
Short | -128~127 |
Integer | -128~127 |
Long | -128~127 |
Float | 没有 |
Double | 没有 |
Character | 0~127 |
Boolean | true和false |