包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便。
为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为封装类或数据类型类。
包装类均位于java.lang包。
包装类和基本数据类型的对应关系如表所示
基本数据类型 | 包装类 | 构造方法 |
boolean | Boolean | Boolean(boolean b)或Boolean(String s) |
byte | Byte | Byte(byte b) 或Byte(String s) |
char | Character | Character(char c) |
short | Short | Short(short s ) 或Short(String s) |
int | Integer | Integer(int i) 或者Integer(String s) |
long | Long | Long(long l)或者Long(String s) |
float | Float | Float(double d)或者Float(float f)或者Float(String s) |
double | Double | Double(double d)或者Double(String s) |
另外还有两个包装类BigInteger、BigDecimal没有相对应的基本类型,主要应用于高精度的运算,BigInteger 支持任意精度的整数, BigDecimal支持任意精度带小数点的运算。
包装类的功能
包装类属于引用数据类型,具有属性和方法,使用这些方法可以实现很多基本数据类型没有的功能,包装类主要提高以下功能:(1)将基本数据类型包装后,可以当做对象使用;(2)为基本数据类型提供各种转换功能,如将数值转换为字符串,将字符串转换为数值。
有些数据结构如ArrayList,HashMap等不能存放原值类型,这时只能使用其包装类。
基本数据类型和其包装类间的转换(以Integer类为例)
(1)基本类型转换为包装类型: Integer I=new Integer(primitive value);
(2)包装类型转换为基本类型: int a=I.intValue()。
基本类型与包装类型主要异同:
1. 在Java中,一切皆对象,但八大基本类型却不是对象。
2. 声明方式的不同,基本类型无需通过new关键字来创建,而封装类型需new关键字。
3. 存储方式及位置的不同,基本类型是直接存储变量的值保存在堆栈中能高效的存取,封装类型需要通过引用指向实例,具体的实例保存在堆中。
4. 初始值的不同,封装类型的初始值为null,基本类型的的初始值视具体的类型而定,比如int类型的初始值为0,boolean类型为false;
5. 使用方式的不同,比如与集合类合作使用时只能使用包装类型。