爲何在 Java 中128==128返回false,而127==127返回true呢?緩存
有這樣一段代碼微信
Integer a=127; Integer b=127; System.out.println(a==b); Integer c=128; Integer d=128; System.out.println(c==d);
運行結果爲:學習
true false
到底是爲何呢?spa
若是兩個引用指向相同的對象,它們在 ==
表達式中是相等的;若是兩個引用指向不一樣的對象,儘管它們擁有相同的內容即值,在 ==
表達式中也是不相等的。code
查看源碼你就會發現,在Integer類的內部設置了緩存,爲-128到127之間,因此只要在這個區間之間,就是同一對象,並無建立新的對象對象
歡迎添加本人微信,帶你加入Java學習交流羣,還有學習資料等你獲取。blog