首頁 >Java >java教程 >Java中的Integer緩存

Java中的Integer緩存

PHPz
PHPz轉載
2023-09-21 22:21:081249瀏覽

Java中的Integer緩存

Java 是當今最常用的程式語言之一,因為它包含高階特性和功能。在 Java 的每個新版本中,其開發人員都會添加新的功能和功能,而整數快取是 Java 5 中引入的功能。在本教程中,我們將了解 Java 中的整數快取是什麼以及它在程式設計中的重要性。 p>

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,並且對於「第一個」和「第二個」物件的比較傳回 true。這意味著“第一個”和“第二個”物件具有相同的引用。

所以,問題是'first'、'second'、'third' 和'fourth' 都是整數對象,但它僅在'first' 和'second' 的比較時返回true,但對於“第三”和「第四」的比較。

這裡引入了整數快取的概念。

-128 到 127(含)是最常用的整數值。因此,當程式設計師建立一個值在-128到127範圍內的新整數物件時,JVM首先檢查記憶體中是否存在具有相同值的物件。如果是,則傳回同一物件的參考。否則,它會建立新物件並傳回該物件的參考。

現在,程式設計師很清楚為什麼會因為快取而比較「第一個」和「第二個」物件會回傳 true。

但是,如果我們使用「new」關鍵字建立對象,它總是在記憶體中建立一個新對象。因此,整數緩存在這種情況下不起作用。

Integer first = new Integer(13);
Integer second = new Integer(13);

在上面的程式碼中,物件的值在-128到127之間。但是,當我們使用建構函數建立物件時比較兩個物件時,它會傳回 false。

整數快取的好處

  • 記憶體最佳化 - 如果物件存在,整數快取將使用相同的物件儲存 -128 到 127 之間的整數,而不是建立一個新物件。它節省了設備的記憶體。

  • 效能 - 物件建立需要記憶體分配和物件初始化。因此,使用現有物件創建可以提高應用程式的效能。

結論

簡單來說,整數快取特性就是將最常用的整數物件快取在記憶體中以供重複使用。它透過使用現有物件提高了應用程式的記憶體優化和效能。

以上是Java中的Integer緩存的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除