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

PSR*_*PSR 5 java byte

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

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

提前致谢....

Ste*_*n C 8

它的含义非常简单.

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

    byte[] numbers = new byte[40];
Run Code Online (Sandbox Code Playgroud)

如果我将它们存储在下面,它将占用更少的空间:

    int[] numbers = new int[40];
Run Code Online (Sandbox Code Playgroud)

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


注意事项:

  1. 显然,这仅在数字足够小以表示为byte......而没有溢出时才有效; 即它们必须在-128到+127的范围内

  2. 这不适用于简单变量.在Java中,byte变量和int变量通常每个占用4个字节.(这是一个低级JVM的东西,需要很多解释......)

  3. 我正在掩盖堆内存可能以比4字节更粗糙的粒度分配的事实.分配粒度通常为8个字节.但是,对于大型阵列,分配粒度的贡献可以忽略不计.