1. 程式人生 > >Integer 型別資料比較相等的那些坑

Integer 型別資料比較相等的那些坑

public void testInter() {
    Integer a = new Integer(200);
    Integer b = new Integer(200);
    Integer c = 200;
    Integer e = 200;
    int d = 200;
    Object o=200;
    System.out.println("基本型別和數字常量    ==判斷"+(o==c));
    System.out.println("基本型別和數字常量    equal判斷"+c.equals(o));
    System.out.println("兩個new出來的物件    ==判斷" 
+ (a == b)); System.out.println("兩個new出來的物件 equal判斷" + a.equals(b)); System.out.println("new出的物件和用int賦值的Integer ==判斷" + (a == c)); System.out.println("new出的物件和用int賦值的Integer equal判斷" + (a.equals(c))); System.out.println("兩個用int賦值的Integer ==判斷" + (c == e)); System.out.println("兩個用int賦值的Integer equal判斷"
+ (c.equals(e))); System.out.println("基本型別和new出的物件 ==判斷" + (d == a)); System.out.println("基本型別和new出的物件 equal判斷" + (a.equals(d))); System.out.println("基本型別和自動裝箱的物件 ==判斷" + (d == c)); System.out.println("基本型別和自動裝箱的物件 equal判斷" + (c.equals(d))); }
//Java程式碼執行結果
基本型別和數字常量    ==判斷false
基本型別和數字常量    equal判斷true
兩個new出來的物件    ==判斷false
兩個new出來的物件    equal判斷true
new出的物件和用int賦值的Integer   ==判斷false
new出的物件和用int賦值的Integer   equal判斷true
兩個用int賦值的Integer    ==判斷false
兩個用int賦值的Integer    equal判斷true
基本型別和new出的物件   ==判斷true
基本型別和new出的物件   equal判斷true
基本型別和自動裝箱的物件   ==判斷true
基本型別和自動裝箱的物件   equal判斷true
綜上程式碼測試後發現無論什麼比較,Integer型別的資料最好用equals方法進行比較