繁体   English   中英

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

[英]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位值,其(有符号)范围为-128127

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

我对JVM的内部了解不足,但它可能会节省内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM