Integer对象有一个常量池,其值的范围是-128到127。当对Integer对象进行比较的时候,如果数值在-128——127以内,对直接从常量池中调用,在使用“= =”进行比较内存地址的时候,他们是相等的。但是当interger包装的数值不在常量池范围内,integer会重新new一个Integer对象,这个时候,使用”= =“进行比较就是false;
public void testInteger() {
Integer a = 1;
Integer b = 1;
Integer c = 200;
Integer d = 200;
System.out.println(a == b);
System.out.println(c == d);//比较内存地址
System.out.println(c.equals(d));//比较值
}
输出结果为:
true
false
true