Java字节数组

时间:2011-08-29 15:17:09

标签: java bytearray

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

谢谢,

3 个答案:

答案 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 TroveFastutil。它们是使原始集合更容易处理的库。

编辑2:

我在你的一个回复中读到你正在进行对象序列化。您可能对ByteBuffers感兴趣。这使得将各种原始类型写出到包装数组并获得结果数组变得容易。如果您想要轻松序列化的结构化数据类型,请查看Google protocol buffers