包装类
Java中的基本数据类型对应的包装类使其对象化,具有属性和方法。
包装类与基本数据类型
Boolean和Character的父类是Object,其他包装类的父类是Number
存储方式:包装类型对象实例化,借由new在堆空间里进行空间分配,对应栈空间中存储地址引用; 基本数据类型变量对应栈空间中存储的是具体数据值。 通常,包装类的效率会比基本数据类型的效率低,空间占用大。
初始值:基本数据类型有各自默认初始值,包装类的对象未初始化时,初始值均为null
装箱与拆箱
装箱:基本数据类型 转换为 包装类
拆箱:包装类 转换为 基本数据类型
自动与手动拆装箱
手动装箱:可以结合类型的构造方法或者valueOf()方法实现 手动拆箱:可以通过xxxValue()方法实现 自动装箱:把一个基本类型变量直接赋给对应的包装类型变量。 自动拆箱:把包装类对象直接赋给对应的基本数据类型变量
public static void main(String[] args){ //手动装箱 int one=12; //方式1:构造方法传参 Integer t1=new Integer(one); //方式2:类型.valueOf方法 Integer t2=Integer.valueOf(one); //手动拆箱 //对象.xxxValue()方法 int two=t1.intValue(); }
public static void main(String[] args){ //自动装箱 int one=12; Integer t1=one; //自动拆箱 int two=t1; }
包装类的比较
public static void main(String[] args) { Integer one= new Integer(100); Integer two = new Integer(100); System.out.println("one==two的结果:"+(one==two)); Integer three=100;//自动装箱 System.out.println("three==100的结果:"+(three==100));//自动拆箱 Integer four=100; System.out.println("three==four的结果:"+(three==four)); Integer five=200; System.out.println("five==200的结果:"+(five==200)); Integer six=200; System.out.println("five==six的结果:"+(five==six)); }
Integer i=Integer.valueOf(100);Java在执行此方法时,会提供一个缓存区,如果-128<参数<127,会从缓存区中查找是否存在同样的对象,如果有则会直接产生,如果没有才会实例化Integer
除Float和Double不能应用对象常量池概念,其他包装类都可以