答案就在Integer的valueOf( )方法中,如果我们的数值在-128到127之间的数都存在一个叫catch数组中,该数组相当于一个缓冲,当我们在-128到127之间自动装箱的时候、就直接返回该数组中对应的元素的内存地址,所以在-128~127之间用==比较是相等的,而不在这个区域的数,则需要开辟一个内存空间,因此==比较是比较的是分别开辟的新内存空间的地址,故不相等
public class Test {
public static void main(String[] args) {
int n = 128;
int n1 = 128;
int c = 127;
Integer c1 = 127;
Integer d = 128;
Integer d1 = 128;
System.out.println(n==n1);
System.out.println(c==c1);
System.out.println(d==d1);
System.out.println(d.equals(d1));
}
}