Integer 数值比较
//Integer 源码
private static class IntegerCache {
static final int low = -128; static final int high; static final Integer cache[]; public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }java中Integer类型对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的。所以地址空间不一样,也就不相等。
//我所犯的错误
将两个Integer类型用 == 进行比较 当超出-128 ---127就会返回false 测出bug
改善:运用 intValue()方法进行比较
public static void main(String[] args) {
Integer a = 50;
Integer b = 50;
System.out.println("a==b:------------>"+(a==b));//true
Integer c = 128;
Integer d = 128;
System.out.println("c==d:------------>"+( c==d));//false
Integer e = 128;
Integer f= 128;
System.out.println("e==f:------------>"+( c.intValue()==d.intValue()));//true
}
Integer a = 50;
Integer b = 50;
System.out.println("a==b:------------>"+(a==b));//true
Integer c = 128;
Integer d = 128;
System.out.println("c==d:------------>"+( c==d));//false
Integer e = 128;
Integer f= 128;
System.out.println("e==f:------------>"+( c.intValue()==d.intValue()));//true
}
技术交流群,海量学习资料免费获取,备注来意:就说博客上看到的,
Q群:289683917
浙公网安备 33010602011771号