Java 包装类
Java 包装类
Java 使用基本类型(如int、double、char和boolean)及类和对象来表示数据,要管理的数据仅有两类,即基本类型值及对象引用。但当你想用处理对象的一样的方式来处理基本类型的数据时,必须将基本类型值 “包装” 为一个对象。为此,Java 提供了包装类。
包装(wrapper)类 表示一种特殊的基本类型。例如,Integer 类表示一个普通的整型量。由Integer类创建的对象只保存一个int值。包装类的构造方法接受一个基本类型的值,并保存它。
Integer ageObj = new Integer(40);
执行后,ageObj 对象就将整数 40 看作一个对象。它可以用在程序中需要对象而不是需要基本类型值的地方。
对于 Java 中的每种基本数据类型,在 Java 类库中都有一个对应的包装类。所有的包装类都定义在 java.lang 包中。
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
void | Void |
注意:对于void类型的包装类是 Void。但和其他的包装类不一样的是,Void类不能被实例化。它只表示 void 引用的概念。
包装类提供了几种方法,可以对相应的基本数据类型的值进行操作。 下面列举Integer类中的几个方法。其他的包装类有类似的方法。
- Intger(int value):构造方法,创建新的Integer对象,用来保存 value 的值。
- byte byteValue()、double doubleValue()、float floatValue()、int intValue()、long longValue():按对应的基本数据类型返回Integer对象的值。
- static int parseInt(String str):按 int 类型返回存储在指定字符串 str 中的值;
- static String toBinaryString(int num)、static String toHexString(int num)、static String toOctalString(int num):将指定的整型值在对应的进制下按字符串形式返回。
Java 包装类中常常含有常量,如Integer.MIN_VALUE 和 MAX_VALUE,它们分别保存 int 的最大值和最小值。其他类中也有相似的常量。
自动将 基本数据类型 转为 对应的包装类 的过程称为 自动装箱(Autoboxing)。例如:
Integer obj1;
int num1 = 69;
obj1 = num1; // 自动创建 Integer 对象
逆向的转换称为 拆箱(unboxing),需要时也是自动完成的。例如:
Integer obj2 = new Integer(69);
int num2;
num2 = obj2; // 自动解析出 int 型
一般来说,基本数据类型与对象之间的赋值是不相容的。自动装箱仅能用在基本数据类型与对应的包装类之间。