Java字节数组

Java字节数组,java,bytearray,Java,Bytearray,如果我用byte[]创建一个字节数组,那么每个元素的大小是多少?它们可以调整大小/合并吗 谢谢,我不知道你所说的调整大小和合并是什么意思 从文件中: 字节:字节数据类型是一个8位有符号2的补码整数。它的最小值为-128,最大值为127(含)。字节数据类型对于在大型阵列中节省内存非常有用,而实际上节省内存很重要。它们也可以用来代替int,因为它们的限制有助于澄清代码;变量的范围是有限的这一事实可以作为文档的一种形式 编辑:如果通过调整大小/合并来谈论数组本身,那么字节数组与其他数组相比没有什么特别

如果我用
byte[]
创建一个字节数组,那么每个元素的大小是多少?它们可以调整大小/合并吗


谢谢,

我不知道你所说的调整大小和合并是什么意思

从文件中:

字节:字节数据类型是一个8位有符号2的补码整数。它的最小值为-128,最大值为127(含)。字节数据类型对于在大型阵列中节省内存非常有用,而实际上节省内存很重要。它们也可以用来代替int,因为它们的限制有助于澄清代码;变量的范围是有限的这一事实可以作为文档的一种形式


编辑:如果通过调整大小/合并来谈论数组本身,那么字节数组与其他数组相比没有什么特别之处。

有两种方法来分配数组

A) 分配给定大小的空数组:

byte[] ba1 = new byte[18]; // 18 elements
B) 通过指定内容来分配数组

byte[] ba2 = {1,2,3,4,5}; // 5 elements

大小为每个元素一个字节

它们不能重新调整大小。但是,您可以使用System.arrayCopy()通过创建新数组并将源数组复制到新数组中来合并它们

编辑1:

对象头的开销为8字节,数组长度的开销为4字节,总开销为12字节。因此,小型阵列的成本相对较高

退房并离开。它们是使使用原始集合更容易的库

编辑2:


我在您的一个回复中读到您正在进行对象序列化。你可能对ByteBuffers感兴趣。这样就可以很容易地将各种基本类型写入一个包装的数组,并获得结果数组。如果您想要轻松序列化结构化数据类型,还可以查看。

可能存在+1的重复,因此Java中的字节大小固定为8位。我假设他希望能够,例如,通过将4个连续字节的集合视为int,将字节[]视为int[]。我需要序列化对象并将它们存储为数组中的字节。我不确定如何知道哪些元素将占用哪个对象,因为每个元素只占用1个字节,而存储的对象最多可以达到100个字节5个元素,是否将int 1转换为bit并存储在ba2[0]中?其余的元素也一样吗?我可以在那里存储实际的位吗,比如10010101?@Nayefc-see。另外,从JDK7开始,还有一个字节文字:
字节b=0b10010101
。在以前的版本中,只有十进制、八进制和十六进制值的文字我知道。。但在您的示例中,如果将“1”、“2”和“3”赋给一个字节数组,它会将数字转换为字节并存储吗?它不能将int“1”存储在字节数组中,因为int是32位(即4字节),它会将数字转换为字节并存储它吗?不,编译器从上下文中知道这是字节文字。这意味着
byte[]s={127}
是合法的,而
byte[]s={128}
不是。请注意,提到的开销取决于JVM实现。一个JVM实现或版本的开销可能与另一个不同。不要编写依赖于这些数字的程序,因为它不会在所有JVM上工作。