如果我有以下内容:
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
我知道每个元素的大小都是一个字节。但我似乎不明白整数87
将如何存储在一个字节中?或者,byte[]
如何存储数据?
编辑:我看到你可以在java中的一个字节中存储-128到127。那么,这是否意味着无法在byte[]
中存储大于或小于这些数字的任何内容?如果是这样,这不是限制使用吗?或者我不理解使用byte[]
的确切位置。
答案 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位的值,其中包含-128
到127
的(签名)范围。
使用byte[]
,您可以执行一些特殊操作,例如从给定的字节流构建String
并使用所需的Charset
对其进行解码,并且某些函数会为您提供byte[]
作为他们的回报价值。
我对JVM的内部结构知之甚少,但它可能会节省内存。