Java作为面向对象的语言,在设计类时为八个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)
包装类均位于java.lang包,包装类和基本数据类型的对应关系如下所示:
基本数据类型 包装类
byte –>Byte
boolean–>Boolean
short–>Short
char–>Character
int–>Integer
long–>Long
float–>Float
double–>Double
在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。
注意前六个类派生于公共的超类Number。对象包装类是不可变的,一旦构造了包装类,就不允许更改包装在其中的值。
包装类也是由 final修饰的,因此无法定义子类。
假想定义一个整型数组列表。而尖括号中的类型参数不允许是基本类型,只能使用包装类来声明对象的数组列表。
比如:ArrayList list = new ArrayList<>( ) ;
当然,因为每个值都分别包装在对象中,ArrayList的效率远远低于int[ ]数组。
Java 5.0后支持自动装箱
list.add(3)将会自动转换为list.add(Interger.valueOf(3))
相反的,当将一个Interger对象赋给一个int值时,将会自动拆箱。
Int n = list.get( i );
将转换为
Int n = list.get( i ).intValue( );
甚至在算数表达式中也能够进行自动装箱和拆箱。