java字节数据类型

时间:2009-12-31 21:37:06

标签: java byte

在Sun的教程中,它说了一个字节:

  

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

它如何节省内存?什么是2的赞美?

3 个答案:

答案 0 :(得分:10)

它通过仅消耗8位存储来节省内存,而整数则为32。数组的大小与包含的数据类型的大小成正比;一个整数数组将消耗大约四倍的内存( handwaves )而不是一个字节数组。

来自Wikipedia

  

二重补充系统或   二进制补码算法是一个   负数的系统   由两者的补充代表   绝对值; 1这个系统是   最常见的代表方法   在计算机上签名整数。[2]在   这样的系统,一个数字被否定了   (从正面转为负面   反之亦然)通过计算它的两个   补充。 N位二进制补码   数字系统可以代表每一个   整数范围为-2 ^(N-1)到   + 2 ^(N-1)-1。

答案 1 :(得分:2)

另一件事是,主要是出于历史原因,大多数数据被分解为8位字节。它可能是任何数字,但是当我真的开始标准化的时候,8位计算机真的很受欢迎。我想。

因此,例如,文本通常以每个字母一个8位字节存储(在ASCII模式下)。通常使用指向字节索引的指针来索引数据文件。人们谈论千字节和兆字节,它们意味着1024 * 8位。或2 20 * 8位。

字节是用于许多目的的通用计算单元。如果要编辑其他程序读取的标准文件,则很可能需要将其加载到byte []中并在某个时刻处理单个字节。

如果sun不包含字节数据类型,编写使用其他程序中的数据或文本的java程序将是一个巨大的痛苦。您必须加载整数,并进行移位和操作以隔离各个位,并始终将索引除以4。不好玩。

所以为了节省内存,没有真正添加字节,但为了兼容性。

因为一个字节可以有2个 8 = 256个可能值中的一个,所以Sun决定它们应该表示-128到127,而不是0到255,因为他们不想处理有符号和无符号数字(所有数据类型都是有符号的,Java没有像C / C ++那样的无符号关键字)

他们使用了两个补码,因为它是处理负数的标准方法。

答案 2 :(得分:0)

由于只有一个字节长,字节可以节省内存,而常用的大多数其他数据类型只有4或8个字节。

二进制补码是将有符号数编码为二进制的几乎通用的方法。这个编码有一个很好的属性,可以递增任何值,就像它只是二进制一样,为你提供下一个整数值,即使值通过零。相同的CPU电路可以计算有符号或无符号整数。