package Dec2016;
public class Ques1220 {
public static void main(String[] args) {
Integer num1 = new Integer(100);
Integer num2 = new Integer(100);
compare(num1, num2);
}
public static void compare(Integer a, Integer b){
System.out.println(a == b); // false
System.out.println(a > b); // false
System.out.println(a < b); // false
}
}
false false false
new Integer(100) 每次都在堆上創建新對象,== 比較引用地址 → false。>、< 觸發自動拆箱為 int 基本類型比較數值,100 不大於/不小於 100 → 均為 false。Integer a = 100; // 自動裝箱 -> Integer.valueOf(100) Integer b = 100; System.out.println(a == b); // true (-128~127 緩存範圍內) Integer c = 200; Integer d = 200; System.out.println(c == d); // false (超出緩存範圍)
.equals()new Integer(),優先用 Integer.valueOf() 或直接賦值int 無此問題,性能更好
