1. 程式人生 > >Integer 數值比較

Integer 數值比較

str ont eof integer ring align 空間 ace bug

//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 數值比較