基本数据类型的包装类
八种基本数据类型并不是对象,Java为每个基本类型提供了对应的包装类
八种包装类和基本数据类型的对应关系
基本数据类型
byte——Byte
boolean——Boolean
short——Short
char——Character
int——Integer
Integer i=Integer.valueOf("123");
long——Long
float——Float
double——Double
自动装箱和自动拆箱——将基本数据类型和包装类自动相互转换
自动装箱
Integer i = 100;//自动装箱
//相当于编译器自动为您作以下的语法编译:
Integer i = Integer.valueOf(100);//调用的是valueOf(100),而不是new Integer(100)
自动拆箱
Integer a = 100;
int b = a;//自动拆箱
//相当于编译器自动为您作以下的语法编译:
int b = a.intValue();
缓存问题
整型、char类型所对应的包装类,在自动装箱时,对于-128~127之间的值会进行缓存处理,其目的是提高效率。
缓存原理为:如果数据在-128~127这个区间,那么在类加载时就已经为该区间的每个数值创建了对象,并将这256个对象存放到一个名为cache的数组中。每当自动装箱过程发生时(或者手动调用valueOf()时),就会先判断数据是否在该区间,如果在则直接获取数组中对应的包装类对象的引用,如果不在该区间,则会通过new调用包装类的构造方法来创建对象。