Integer a=3,b=3;Integer c=257,d=257;Integer e=new Integer(8),f=new Integer(8);判斷a==b c==d e==f的結果

    如題,這是一道面試題,就是通過"=="來比較整數的大小,這裏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才能理解 。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章