如果我用byte[]
创建一个字节数组,那么每个元素的大小是多少?他们可以调整大小/合并吗?
谢谢,
答案 0 :(得分:6)
不确定调整大小和合并后的含义
来自文档:
byte:字节数据类型是一个8位带符号的二进制补码整数。它的最小值为-128,最大值为127(含)。字节数据类型可用于在大型阵列中保存内存,其中节省的内存实际上很重要。它们也可用于代替int,其限制有助于澄清您的代码;变量范围有限的事实可以作为一种文档形式。
编辑:如果通过调整大小/合并你正在讨论数组本身,那么与其他数组相比,字节数组没什么特别的。
答案 1 :(得分:3)
分配数组有两种方法。
A)分配给定大小的空数组:
byte[] ba1 = new byte[18]; // 18 elements
B)通过指定内容
来分配数组byte[] ba2 = {1,2,3,4,5}; // 5 elements
答案 2 :(得分:2)
每个元素的大小为一个字节。
它们无法重新调整大小。但是,您可以使用System.arrayCopy()自行合并它们,方法是创建一个新数组并将源数组复制到新数组中。
编辑1:
对象头还有8字节的开销,阵列长度也有4字节的开销,总开销为12字节。所以小阵列相对昂贵。
结帐GNU Trove和Fastutil。它们是使原始集合更容易处理的库。
编辑2:
我在你的一个回复中读到你正在进行对象序列化。您可能对ByteBuffers感兴趣。这使得将各种原始类型写出到包装数组并获得结果数组变得容易。如果您想要轻松序列化的结构化数据类型,请查看Google protocol buffers。