Java 整數快取
Java 是當今使用最廣泛的程式語言之一,因為它包含高階功能和特性。在 Java 的每個新版本中,其開發人員都會新增新的功能和特性,整數快取就是 Java 5 中引入的一項功能。在本教程中,我們將瞭解 Java 中的整數快取是什麼以及它在程式設計中的重要性。
什麼是 Java 中的整數快取?
從“快取”這個詞,讀者可以猜測我們正在討論將整數儲存在記憶體中並在需要時重複使用它。是的,你猜對了。但問題是為什麼我們需要整數快取。
讓我們透過示例程式碼瞭解整數快取是如何工作的以及為什麼我們需要它。
示例
在下面的示例中,我們定義了第一個和第二個整數變數,並用 100 初始化它們,該值在 -128 到 127 的範圍內。之後,我們比較了這兩個變數,並根據比較結果列印了真或假的值。
此外,我們還定義了第三個和第四個整數變數,並用 130 值初始化它們,這些值不在 -128 到 127 的範圍內。此外,我們還比較了它們並在輸出中顯示了結果值。
import java.io.*; public class Main { public static void main(String[] args) { Integer first = 100; Integer second = 100; // It prints true only when both objects have the same reference if (first == second) { System.out.println("true"); } else { System.out.println("false"); } Integer third = 130; Integer fourth = 130; if (third == fourth) { System.out.println("true"); } else { System.out.println("false"); } } }
輸出
true false
如果我們猜測輸出,兩者都應該返回“false”輸出,因為“==”運算子用於匹配物件的引用。“==”運算子僅當兩個物件具有相同的引用時才返回 true。但是,如果我們需要在 Java 中比較物件值,我們可以使用 equals() 方法,但我們不能使用“==”運算子來匹配物件值。
因此,可以明確的是,“==”在兩個物件具有相同引用時返回 true,並且對於“first”和“second”物件的比較返回 true。這意味著“first”和“second”物件具有相同的引用。
那麼,問題是“first”、“second”、“third”和“fourth”都是整數物件,但它只返回“first”和“second”的比較為 true,而“third”和“fourth”的比較則不為 true。
這裡,整數快取的概念就出現了。
包含 -128 到 127 的值是最常用的整數。因此,當程式設計師使用 -128 到 127 範圍內的值建立一個新的整數物件時,JVM 首先檢查記憶體中是否存在具有相同值的同一物件。如果是,則返回同一物件的引用。否則,它會建立新物件並返回該物件的引用。
現在,程式設計師清楚了為什麼“first”和“second”物件的比較由於快取而返回 true。
但是,如果我們使用“new”關鍵字建立物件,它始終會在記憶體中建立一個新物件。因此,在這種情況下,整數快取不起作用。
Integer first = new Integer(13); Integer second = new Integer(13);
在上面的程式碼中,物件的取值介於 -128 到 127 之間。儘管如此,當我們使用建構函式建立物件時,比較這兩個物件時仍將返回 false。
整數快取的好處
記憶體最佳化 - 如果整數物件存在,則整數快取會對 -128 到 127 之間的整數使用相同的物件,而不是建立新的物件。它節省了裝置的記憶體。
效能 - 物件的建立需要分配記憶體並初始化物件。因此,使用現有物件進行建立提高了應用程式的效能。
結論
簡單來說,整數快取功能用於快取記憶體中最常用的整數物件以供重複使用。它透過使用現有物件來提高應用程式的記憶體最佳化和效能。