如果我有以下情况:
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
我知道每个元素的大小是一个字节。但我似乎不明白的是整数87
如何存储在一个字节中?或者,如何byte[]
存储数据?
编辑:我看到您可以在 java 中将 -128 到 127 存储在一个字节中。那么,这是否意味着无法在 a 中存储大于或小于这些数字的任何内容byte[]
?如果是这样,那不是限制了它的使用吗?或者我不了解使用byte[]
.
如果我有以下情况:
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
我知道每个元素的大小是一个字节。但我似乎不明白的是整数87
如何存储在一个字节中?或者,如何byte[]
存储数据?
编辑:我看到您可以在 java 中将 -128 到 127 存储在一个字节中。那么,这是否意味着无法在 a 中存储大于或小于这些数字的任何内容byte[]
?如果是这样,那不是限制了它的使用吗?或者我不了解使用byte[]
.
一个字节是 8 位。 2^8
是 256,这意味着 8 位可以存储 256 个不同的值。在 Java 中,这些值是 -128 到 127 范围内的数字,因此 87 是一个有效字节,因为它在该范围内。
同样,尝试做类似的事情byte x = 200
,你会看到你得到一个错误,因为 200不是一个有效的字节。
Abyte
只是一个 8 位整数值。这意味着它可以保存从 -2^7 到 2^7-1 的任何值,其中包括 {87、79、87、46、46、46} 中的所有数字。
Java 中的 Aninteger
只是一个 4 字节整数,允许它保存 -2^31 到 2^31 - 1
我认为简短的回答是 byte[] 存储字节。数组中的数字 87 在它上面是一个字节,而不是一个 int。如果您将其更改为 700(或高于 127 的任何值),您将收到编译错误。试试看。
Java 字节是一个基元,最小值为 -128,最大值为 127(含)。87 在允许的范围内。字节数据类型可用于在大型数组中节省内存,其中内存节省实际上很重要。
byte[] 是一个对象,它存储了许多这些原语。
您可以使用byte
在其中存储 8 位值,其(有符号)范围从-128
到127
。
byte[]
你可以做一些特殊的操作,比如从给定的字节流构建s 并用String
所需的 解码它们Charset
,一些函数会给你byte[]
作为它们的返回值。
我对 JVM 的内部结构知之甚少,但它可能会节省内存。