如果我使用
谢谢。
byte[]
创建一个字节数组,每个元素的大小会是多少?它们可以调整大小/合并吗?谢谢。
我不确定你所说的“resized”和“merged”是什么意思。
根据文档:
byte:byte数据类型是一个8位有符号二进制补码整数。它的最小值为-128,最大值为127(包括在内)。在大型数组中节省内存时,byte数据类型可以很有用,其中内存节省实际上很重要。它们也可以用于代替int,其中它们的限制有助于澄清您的代码;变量范围受限可以作为一种文档形式。
编辑:如果你所说的“resized/merged”是关于数组本身的,那么与其他数组相比,byte数组没有什么特别之处。
有两种方法来分配一个数组。
A) 分配一个给定大小的空数组:
byte[] ba1 = new byte[18]; // 18 elements
B) 通过指定内容分配数组
byte[] ba2 = {1,2,3,4,5}; // 5 elements
byte b = 0b10010101
。在以前的版本中,只有十进制、八进制和十六进制值的字面量。 - Sean Patrick Floydbyte[] s = { 127 }
是合法的,而 byte[] s = { 128 }
不是。 - Sean Patrick Floyd每个元素将占用一个字节的空间。
它们无法被调整大小。但是,您可以使用System.arrayCopy()自己合并它们,通过创建一个新数组并将源数组复制到新数组中。
编辑1:
对象头有8字节的开销,数组长度有4字节的开销,总共有12字节的开销。因此,小型数组相对昂贵。
请查看GNU Trove和Fastutil。它们是使原始集合操作更加容易的库。
编辑2:
我在你的回应中读到你正在进行对象序列化。您可能会对ByteBuffers感兴趣。这些使得将各种原始类型写入包装数组并获取结果数组变得容易。如果您想要轻松序列化结构化数据类型,请查看Google protocol buffers。