测试:
public static void main(String[] args){
Integer a=128;
Integer b=128;
System.out.print(a==b);//false
a=127;
b=127;
System.out.print(a==b);//true
}
实际情况是当Integer的值处于-128到127之间时,==都会返回ture,而在范围之外,则返回false
这是为什么呢?
Integer在内部为我们封装了一层判断,用来自动装箱和拆箱。如果值在-128~127之间,会返回一个实例的缓存。
因为-128~127是平时比较常用的数,多次使用相同的底层对象可以有效的对内存进行优化。
那么如果我们就是想比较两个范围外的值是否相等怎么办?
那就用equals方法,Integer自己重写了equals方法,因此,如果我们: