Java 中的整數快取:了解最佳化
最近的觀察引起了有關 Java 中 Integer 物件行為的混亂。程式碼範例示範了相等運算子對於兩個等於 1000 的 Integer 實例傳回“false”,但對於兩個等於 100 的實例則傳回“true”。
這個看似悖論源自於 Java 的整數快取機制。為了優化效能並減少記憶體佔用,Java 虛擬機器 (JVM) 快取 -128 到 127 之間的 Integer 物件。這意味著對此範圍內的 Integer 實例的引用始終相同。
因此,在第二個程式碼片段,其中 Integer 實例代表值 100,「c」和「d」都指向同一個快取對象,比較它們的相等性時結果為「true」。但是,對於超出此範圍的值(例如 1000),會建立不同的 Integer 對象,因此比較結果為「假」。
此最佳化透過減少記憶體使用來影響效能,從而提高快取利用率。它還消除了為常用整數創建新物件的開銷,從而使程式碼執行速度更快。
有關此主題的進一步研究可以在以下資源中找到:
以上是為什麼 Java 中的「Integer」相等有時會回傳「false」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!