基本概念:
将一个基本数据类型的值赋给其所对应的包装类型称之为自动装箱;将一个基本数据类型包装类类型的值赋给其所对应的基本数据类型称之为自动拆箱。
例子讲解:
从int a=9 到 Integer b=a 就是装箱。 从Integer b=a 到 int c = b 就是拆箱。
Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能。
图中,第一行里flag是false,因为这相当于两个对象在比较,所以不相同。
下面那个flag结果值为true,因为只有一个对象,并且两个属性值一样,但是如果aa和bb的值一样,大于127或者小于-128的话,结果flag就为false。这是因为byte、short、int和long所对应包装类的数据缓存范围为 -128~127(包括-128和127);float和double所对应的包装类没有数据缓存范围;char所对应 包装类的数据缓存范围为 0~127(包括0和127);boolean所对应包装类的数据缓存为true和false。
各种基本数据类型所对应的包装类:int--Integer byte--Byte short--Short long--Long float--Float double--Double
char--Character boolean--Boolean
另:装箱的过程会创建对应的对象,这个会消耗内存,所以装箱的过程会增加内存的消耗,影响性能。