int和Integer带来的坑
请看代码
public static void mian(String[] args){
Integer a=0;
Integer b=0;
int c =300;
int d=300;
System.out.println(a==b);
System.out.println(c==d);
}
大家猜猜输出是什么
输出结果(这个结果在低版本的JDK中是不会出现的)
true
true
这里简单解释一下,由Integer.valueOf(int) 源码可知,在传入的值在[-128,IntegerCache.high] 会直接读取IntegerCache.cache这个数组中的值。当如果超出了这个范围 那么就会重新new Integer(int),所以才会出现false的情况。