Java 整数缓存

Java 整数缓存

Java是目前使用最广泛的编程语言之一,它具有高级功能和功能。在每个新版本的Java中,开发人员都会添加新功能和功能,其中包括Java 5中引入的整数缓存。在本教程中,我们将了解Java中的整数缓存是什么,以及在编程中的重要性。

什么是Java中的整数缓存

从“缓存”一词来看,读者可以猜到我们正在谈论将整数存储在内存中,并在需要时重新使用它。是的,你猜对了。但问题是为什么我们需要整数缓存。

让我们通过示例代码来了解整数缓存的工作原理以及我们为什么需要它。

示例

在下面的示例中,我们定义了第一个和第二个整数变量,并将它们初始化为100,它们都在-128到127的范围内。之后,我们比较了这两个变量,并根据比较结果打印了true或false的值。

此外,我们还定义了第三个和第四个整数变量,并将它们初始化为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。

在这里,Integer缓存的概念就出现了。

从-128到127范围内的整数值是最常用的。因此,当程序员创建一个具有-128到127范围内值的新整数对象时,JVM首先检查内存中是否存在具有相同值的对象。如果存在,它返回相同对象的引用。否则,它创建新对象并返回该引用。

现在,程序员明白了为什么’first’和’second’对象的比较由于缓存而返回true。

然而,如果我们使用’new’关键字创建对象,它总是在内存中创建一个新对象。因此,在这种情况下,整数缓存不起作用。

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

在上述代码中,对象的值介于-128到127之间。然而,当我们比较这两个对象时,会返回false,因为我们是使用构造函数创建的对象。

整数缓存的好处

  • 内存优化 − 如果对象存在,整数缓存将使用相同的对象来表示-128到127之间的整数,而不是创建新的对象。这能够节省设备的内存。

  • 性能 − 创建对象需要内存分配和初始化对象。因此,使用现有对象来创建可以提高应用程序的性能。

结论

简而言之,整数缓存功能用于缓存最常用的整数对象,以便在内存中重用。通过使用现有对象,它能够改善应用程序的内存优化和性能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程