@Test
public void test1() {
Integer i1=1;
Integer i2=1;
System.out.println(i1==i2);//true
System.out.println("------------------------------------------");
Integer i3=129;
Integer i4=129;
System.out.println(i3==i4);//false
/*知识点分析:自动装箱,Integer i=1; 相当于 Integer i=Integer.valueOf(1);点开valueOf的源码
public static Integer valueOf(int i) {
if (i >= -128 && i <= 127)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
可以发现,当i >= -128 && i <= 127时,会返回一个缓存中已有的Integer对象,
所以i=1时使用==比较对象时,为true,而i=129时,是false
*/
System.out.println("------------------------------------------");
int i5=129;
System.out.println(i4==i5);
/*true,知识点分析:自动拆箱,Integer类型与int类型用==比较时会自动拆箱成int类型与之比较,隐式执行 int i=Integer.intValue();,两个int类型用==比较,自然为true
*/
}