今天項目中出現了數值比較的問題,由於Integer類型使用==進行比較
public static void main(String[] args) {
Integer t1 = 70, t2 = 70;
Integer t3 = 140, t4 = 140;
System.out.println(t1 == t2);
System.out.println(t3 == t4);
}
java爲了提高效率,IntegerCache類中有一個數組緩存了值從-128到127的Integer對象。當我們調用Integer.valueOf(int i)的時候,如果i的值是>=-128且<=127時,會直接從這個緩存中返回一個對象,否則就new一個Integer對象。所以數值超過127就是對象的比較,不同的對象==比較的是地址自然不相等,比較Integer類型的數據需要使用equals