所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较
说明:对于 Integer var = ? 在-128 至 127 范围内的赋值,Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断。
代码举例:
public static void main(String[] args) {
Integer var = 10000;
Integer bar = 10000;
Integer v=10;
Integer b=10;
if(v==b){
System.out.println("这是错误的比较方法1");
}
if (v.equals(b)){
System.out.println("这是正确的比较方法2");
}
if(var==bar){
System.out.println("这是错误的比较方法3");
}
if (var.equals(bar)){
System.out.println("这是正确的比较方法4");
}
}

本文探讨了Integer对象在不同情况下的创建方式及其值比较的最佳实践。特别关注了-128至127范围内Integer对象的复用,并强调了在该范围外使用equals方法而非==操作符进行值比较的重要性。
3986

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



