java中的byte []如何实际存储数据

时间:2012-07-31 19:08:59

标签: java

如果我有以下内容:

byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};

我知道每个元素的大小都是一个字节。但我似乎不明白整数87将如何存储在一个字节中?或者,byte[]如何存储数据?

编辑:我看到你可以在java中的一个字节中存储-128到127。那么,这是否意味着无法在byte[]中存储大于或小于这些数字的任何内容?如果是这样,这不是限制使用吗?或者我不理解使用byte[]的确切位置。

5 个答案:

答案 0 :(得分:3)

一个字节是8位。 2^8是256,意味着8位可以存储256个不同的值。在Java中,这些值是-128到127范围内的数字,因此87是有效字节,因为它在该范围内。

同样地,尝试执行类似byte x = 200的操作,您会看到出现错误,因为200 不是有效字节。

答案 1 :(得分:2)

byte只是一个8位整数值。这意味着它可以保存从-2 ^ 7到2 ^ 7-1的任何值,其中包括{87,79,87,46,46,46}中的所有数字。

java中的integer只是一个4字节的整数,允许它保持-2 ^ 31到2 ^ 31 - 1

答案 2 :(得分:0)

Java字节是一个基元,最小值为-128,最大值为127(含)。 87在允许的范围内。字节数据类型可用于在大型阵列中保存内存,其中节省的内存实际上很重要。

byte []是一个Object,它存储了许多这些原语。

答案 3 :(得分:0)

我认为简短的回答是byte []存储字节。数组中的数字87高于一个字节,而不是int。如果要将其更改为700(或任何高于127),则会出现编译错误。试试吧。

答案 4 :(得分:0)

您可以使用byte存储8位的值,其中包含-128127的(签名)范围。

使用byte[],您可以执行一些特殊操作,例如从给定的字节流构建String并使用所需的Charset对其进行解码,并且某些函数会为您提供byte[]作为他们的回报价值。

我对JVM的内部结构知之甚少,但它可能会节省内存。