Integer 型別資料比較相等的那些坑
阿新 • • 發佈:2019-02-19
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方法進行比較