public class test{ public static void main(String [] args){ Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321; Long g = 3L; //個人答案 //正確答案 System.out.println(c == d);//true true //包裝類的「==」運算符,在沒有遇到算術運算的時候不會 //進行自動拆箱 System.out.println(e == f);//false false //由於「==」後面有算術運算符,因此自動拆箱 System.out.println(c == (a+b));//false true System.out.println(c.equals(a+b));//true true System.out.println(g == (a+b));//false true //基本數據類型的對象的equals方法不會處理數據類型的轉換 //因此g和a+b的數據類型不一樣,不相等 System.out.println(g.equals(a+b));//true false } }
上面這段代碼的class文件進行反編譯獲得以下代碼:
public class test { public test() { } public static void main(String args[]) { Integer a = Integer.valueOf(1); Integer b = Integer.valueOf(2); Integer c = Integer.valueOf(3); Integer d = Integer.valueOf(3); Integer e = Integer.valueOf(321); Integer f = Integer.valueOf(321); Long g = Long.valueOf(3L); System.out.println(c == d); System.out.println(e == f); System.out.println(c.intValue() == a.intValue() + b.intValue()); System.out.println(c.equals(Integer.valueOf(a.intValue() + b.intValue()))); System.out.println(g.longValue() == (long)(a.intValue() + b.intValue())); System.out.println(g.equals(Integer.valueOf(a.intValue() + b.intValue()))); } }