為什么在 Java 中128==128返回false,而127==127返回true呢?


為什么在 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

究竟是為什么呢?

如果兩個引用指向相同的對象,它們在 == 表達式中是相等的;如果兩個引用指向不同的對象,盡管它們擁有相同的內容即值,在 == 表達式中也是不相等的。

查看源碼你就會發現,在Integer類的內部設置了緩存,為-128到127之間,所以只要在這個區間之間,就是同一對象,並沒有創建新的對象

 

歡迎添加本人微信,帶你加入Java學習交流群,還有學習資料等你獲取。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM