一、概念
Java的包装类是为每一种基本数据类型提供的对应类,它们位于 java.lang
包中。这些包装类允许开发者以面向对象的方式来处理基本数据类型,因为基本数据类型本身不具备对象的特性,如继承、方法调用或序列化等。
二、包装类
在Java中,所有的数字包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。
包装类和基本数据类型对应关系如下表:
包装类 | 基本数据类型 |
---|---|
Byte | byte |
Short | short |
Integer | int |
Long | long |
Float | float |
Double | double |
Boolean | boolean |
Character | char |
三、特性
包装类相较于基本数据类型,它本身有着独特的功能,具体如下:
自动装箱和拆箱:从 JDK 5 开始,可以自动将基本数据类型转换为对应的包装类(装箱),也可以将包装类转换回基本数据类型(拆箱)。
int i = 10;
Integer j = i; // 自动装箱
int k = j; // 自动拆箱
在上述代码中,当 j 被赋予整数值 i 时,因为 j 是一个对象,所以编译器会自动对当前对象进行装箱,随后,当 j 对象赋值于基本数据类型时,会自动拆箱。
方法调用:包装类提供了各种方法来处理其对应的数据类型,例如 toString(), valueOf(), parseInt() 等。
String str = "10";
int num = Integer.parseInt(str); // 将字符串转换为整数
使用泛型:由于 Java 泛型不支持基本数据类型,所以需要使用包装类。
集合框架:集合框架(如 List, Set, Map)只能存储对象,不能直接存储基本数据类型,因此需要使用包装类。
空值处理:包装类允许你拥有 null 值,这在某些情况下是有用的,比如当一个变量可能没有值时,所以实际开发中,实体类的字段一般都是用的包装类。