自动装箱和拆箱
- 自动装箱就是自动的把基本类型变成包装类
- 自动拆箱就是自动的把包装类对象转换成对应的基本数据类型
Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能。
Java中只是对部分基本数据类型对应包装类的部分数据进行了缓存
- byte、short、int和long所对应包装类的数据缓存范围为 -128~127(包括-128和127)
以int和他的包装类为例
public class Main {
public static void main(String[] args) {
// 当小于128的时候会从缓存中拿数据两次拿到的时候同一个数据所以返回的是true
Integer a = 127;
Integer b = 127;
System.out.println(a == b);
// 当大于等于128的时候将不再从缓存中拿数据,这时候就相当于创建了两个对象
Integer c = 128;
Integer d = 128;
System.out.println(c == d);
// 使用这种new的方式,就相当于是创建两个对象
Integer e = new Integer(0);
Integer f = new Integer(0);
System.out.println(e == f);
}
}
结果
true
false
false
-
float和double所对应的包装类没有数据缓存范围;
-
char所对应包装类的数据缓存范围为 0~127(包括0和127)
-
boolean所对应包装类的数据缓存为true和false;