关于java int 与 Integer 之间的比较
1、int 与 int 之间的比较
int作为8种基础类型之一,值是分配在栈上的。而且基础类型没提供equals方式,只能用“==”。因此int 与int 之间的比较就是单纯的值比较。
2、int 与 Integer 之间的比较
int 与 Integer之间的比较是会对Integer进行自动拆箱处理,所以即使Integer对象分配在堆,依然比较的是字面值。
3、Integer 与 Integer 之间的比较
当两个对象通过==比较时,比较的是两个对象的堆内存地址。
在这里分为两种情况:
(1)、 当-128<=value<=127时,都从缓存数组中获取Integer对象,因此两个变量指向的是堆内存中的同一地址,所以new Integer(12)==new Integer(12) 为 true ;
(2)、当value不在这一范围时,则获取到的两个对象的地址不一致,返回为false;‘
因此为避免出现不必要的麻烦在对Integer 类型的对象进行比较时,最好使用equals方法。