#javase5之后就开始支持自动拆装箱了,说这个之前先看看下面的程序:
public class TestIntegerAndint{
public static void main(String[] args) {
int a=100;
Integer b=100;
System.out.println(a==b);
Integer c=100;
Integer d=100;
System.out.println(c==d);
Integer e=200;
Integer f=200;
System.out.println(e==f);
}
}
看到答案你们可能会有点惊讶
这里咱们来分析一下,第一个是java进行了自动拆箱,所以true这个大家应该可以理解
第二个因为 Integer类的内部有一个IntegerCache缓存类;实际上就是缓存了一个大小为256的Integer数组;把-128 ~ 127之间的所有Integer对象都提前创建好,缓存在数组中,方便后面使用; 目的是为了提高性能和节约空间; 当定义一个不在-128 ~ 127之间的Integer对象时,会新创建一个Integer对象
这个也能很好的解释为什么第三个情况是false.