基本类型Java提供了8种基本类型,包括6种数值类型(4种整数,2种浮点数类型),1种字符类型,1种布尔类型:每种基本类型每种类型对应一种包装类型,即Byte、Short、Integer、Float、Long、Double、Boolean、Character;将基本类型转换为包装类型的过程称为装箱,反之称为拆箱。Int装箱成Integer:Integer.valueOf();整数被拆箱为int:Integer.intValue()。基本类型和包装类型的区别包装类型可以为null,而基本类型不能。也就是说,基本类型不能表示空值,基本类型对应的包装类型的初始值为空,而基本类型的初始值是有特定值的;包装类型可以用于泛型,但基本类型不能。因为泛型在编译时会进行类型擦除,也就是说泛型会被转为Object类,而基本类型不能转为Object类,所以不能用于泛型。类型擦除(TypeErasure):将泛型类型转换为Object类。类型擦除确保不会生成新的类,从而减轻运行时内存的负担。原始类型比包装类型更有效。因为包装类型每次使用都需要一个新的对象,所以直接存储值的基本类型比包装类型占用更少的内存空间;分配给包装类型),如果数据大小在-128到127之间,则直接使用缓冲池中的对象,而不是新对象。缓冲池:静态常量数组。Charater类的缓冲池范围是[0,127],Boolean类的缓冲池范围是{true,false},Float类和Double类没有缓冲池,其他封装类型的缓冲池范围(Integer,Long,Byte,Short)都是[-128,127]。整数a=新整数(123);//新对象Integerb=Integer.valueOf(123);//直接使用缓冲池中的对象System.out.println(a==b);//假整数c=123;//直接使用缓冲池中的对象Integerd=123;System.out.println(c==d);//trueSystem.out.println(a==c);//falseSystem.out.println(b==c);//真正的基本类型作为局部变量时存放在Java虚拟机栈的局部变量表中,作为类的成员变量时存放在Java虚拟机的堆中;包装类型是引用类型,引用本身存放在Java虚拟机栈中,对象实例存放在堆中。参考资料:Java基本类型|新手教程中基本类型和包类型的区别
