自动装箱:
我们在定义Integer类型的变量是用的是Integer num = 100;
实际上是Integer num = Integer.valueOf(100);因为我们习欢第一种写法,于是Java开发者就创造了这种操作,这就是自动装箱。我们从源代码中看一下底层的。
i从-128到127,[i+(-IntegerCache.low)]是个索引,返回的是cache数组索引从0到255的元素值
cache数组里放的是从-128到127,共256个元素;
如果值是在范围内那么返回其值,如果没在这个范围中那么会new一个新对象,那么就会出现这种情况
总结:在Integer的valueOf()方法中,如果我们的数值在-128127之间的数值都存储在有一个cache数组当中,该数组相当于一个缓存,当我们在-128127之间进行自动装箱的时候,我们就直接返回该数值在内存中的地址,所以在-128~127之间的数值用==进行比较的时候是相等的。而不在这个范围内的数,需要新开辟一个内存空间,所以不相等



