字节数据类型如何用于在大型数组中保存内存

时间:2013-05-18 06:21:26

标签: java byte

  

字节数据类型是8位带符号的二进制补码整数。它有   最小值为-128,最大值为127(含)。该   字节数据类型可用于在大型数组中保存内存,其中   记忆储蓄实际上很重要。它们也可以用来代替   int其限制有助于澄清您的代码;一个事实   变量的范围有限可以作为一种文档形式。

我在java文档中看到了这一点。我的问题是字节数​​据类型如何将内存保存在大型数组中?。我对此感到困惑

提前致谢....

2 个答案:

答案 0 :(得分:8)

它的含义非常简单。

假设我有40个“数字”来存储。如果我将它们存储在以下内容中:

    byte[] numbers = new byte[40];

它比我将它们存储在以下所需的空间更少:

    int[] numbers = new int[40];

为什么呢?因为在一个数组中,40 byte个实例占用40个字节的内存,但是40 int个实例占用40 x 4 = 160字节的内存。


注意事项:

  1. 显然,只有当数字足够小才能表示为byte时才会有效...没有溢出;即它们必须在-128到+127

  2. 的范围内
  3. 这不适用于简单变量。在Java中,byte变量和int变量通常每个占用4个字节。 (这是一个低级别的JVM,需要大量解释......)

  4. 我正在掩盖堆内存可能以超过4个字节的粗粒度分配的事实。分配粒度通常为8个字节。但是,对于大型数组,分配粒度的贡献可以忽略不计。

答案 1 :(得分:1)

例如,你有一个1000000整数的数组。如果你使用int [],它将占用4Mb的内存。但是如果您知道所有值都在-128到127的范围内,则可以使用byte [],它将占用更少的内存