[英]How does a byte[] in java actually store data
如果我有以下内容:
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
我知道每个元素的大小将是一个字节。 但是我似乎不明白,整数87
将如何存储在一个字节中? 或者, byte[]
如何存储数据?
编辑:我看到您可以在Java中的一个字节中存储-128到127。 那么,这是否意味着没有办法在byte[]
存储大于或小于这些数字的任何内容? 如果是这样,这是否限制了此方法的使用? 还是不了解使用byte[]
的确切位置。
字节为8位。 2^8
是256,这意味着8位可以存储256个不同的值。 在Java中,这些值是-128到127之间的数字,因此87是有效字节,因为它在该范围内。
类似地,尝试执行类似byte x = 200
,您会看到错误,因为200 不是有效字节。
一个byte
只是一个8位整数值。 这意味着它可以保存-2 ^ 7到2 ^ 7-1之间的任何值,包括{87,79,87,46,46,46}中的所有数字。
Java中的一个integer
,仅是一个4字节的整数,允许它容纳-2 ^ 31至2 ^ 31-1
Java字节是具有最小值-128和最大值127(含)的原语。 87在允许的范围内。 字节数据类型对于在大数组中节省内存非常有用,因为内存节省实际上很重要。
byte []是一个存储许多这些原语的对象。
我认为简短的答案是byte []存储字节。 数组上方的数字87是一个字节,而不是int。 如果将其更改为700(或大于127的任何值),则会出现编译错误。 试试吧。
您可以使用byte
在其中存储8位值,其(有符号)范围为-128
至127
。
使用byte[]
您可以执行一些特殊操作,例如从给定的字节流中构建String
,并使用所需的Charset
对其进行解码,并且某些函数将为您提供byte[]
作为其返回值。
我对JVM的内部了解不足,但它可能会节省内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.