Integer a=300;
Integer b=300;
System.out.println(a==b);//false
System.out.println(a.equals(b));//true
Integer把-128到127的整数都提前实例化了, 所以你不管创建多少个这个范围内的Integer都是同一个对象,他们的id相同。因为“==”比较的是地址,在上述代码中a、b地址不同。
所以对于-128到127的整数,可以直接用“==”来判断是否相等,对于范围之外的数,使用equals来比较:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
equals方法中获取Integer的基本类型值(intValue)来用 == 比较了。
所以,我们也可以通过Integer.intValue()获取int值来直接比较。一个int类型可以和Integer直接“==”比较
Integer i = 200;
int j = 200;
System.out.println(i == j);//返回true
综上:
1.如果Integer类型的两个数相等,如果范围在-128~127(默认),可以用“==”比较大小。
2.两个基本类型int进行相等比较,直接用==,因为int类型无equals()函数。
3.一个基本类型int和一个包装类型Integer比较,用==也可,比较时候,Integer类型做了拆箱操作。
4.Integer类型比较大小,要么调用Integer.intValue()转为基本类型用“==”比较,要么直接用equals比较。
本文深入解析Java中Integer对象的比较机制。阐述了-128至127范围内Integer对象的地址复用特性,以及如何正确使用==和equals方法进行数值比较。探讨了基本类型int与Integer对象间的比较细节。

1万+

被折叠的 条评论
为什么被折叠?



