什么是拆箱和装箱
将一个基本数据类型的值赋给其所对应的包装类型称为装箱;将一个基本数据类型包装类类型的值赋给其所对应的基本数据类型称为拆箱,由于装箱和拆箱的过程是自动进行的非人为转换,所以称作为自动装箱和拆箱.。
Integer i = 100;//自动装箱
System.out.println(i);
int j = i;//自动拆箱
System.out.println(j);
JAVA内部进行的缓存
Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能
Integer i = 100;
Integer j = 100;
System.out.println(i==j);
Java中的有两种作用:如果是基本数据类型则用于判断其值是否相等;如果为引用类型则用于判断两者的地址是否相同。此处i和j均为引用类型,但因为其值都是100,所以i和j引用的是同一块地址,所以使用判断时其结果为true。
缓存的限度
1、byte、short、int和long所对应包装类的数据缓存范围为 -128~127(包括-128和127。
Integer i = 128;
Integer j = 128;
System.out.println(i==j);
2、float和double所对应的包装类没有数据缓存范围;
3、char所对应包装类的数据缓存范围为 0~127(包括0和127);
Character i = 5;
Character j = 5;
System.out.println(i==j);
Character i = 128;
Character j = 128;
System.out.println(i==j);
4、boolean所对应包装类的数据缓存为true和false
自动拆箱
基本数据类型和基本数据类型封装型进行“==”运算符的比较时,基本数据类型封装型会先自动拆箱变为基本数据类型后再进行比较。
int a = 128;
Integer aa = 128;
Integer aaa = new Integer(128);
System.out.println(a==aa);//aa自动转换成基本数据类型啊int
System.out.println(a==aaa);//aaa自动转换成基本数据类型啊int
System.out.println(aa==aaa);