Integer 類型數值判斷相等的坑

今天項目中出現了數值比較的問題,由於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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章