如題,這是一道面試題,就是通過"=="來比較整數的大小,這裏int a=3,b=3 ,最終a==b爲true,可以理解,簡單類型比較。Integer e=new Integer(8), f = new Integer(8),最終e==f爲false也可以理解,就是封裝類型,對象類型比較,是地址的比較。唯獨int c=257,d=257的比較也爲false,這是爲什麼呢?
直接看運行結果:
這裏,jdk對於Integer封裝類型做了一個緩存:-128-127以內的Integer類型,比較的是簡單類型,範圍以外的就是比較對象類型。
IntegerCache的定義以及範圍:
Integer c=257,d=257這裏很容易被套路,掉進陷阱裏面,判斷出錯,只有我們搞清楚了Integer中有一個IntegerCache才能理解 。