byte []数组

时间:2012-01-18 11:29:26

标签: java arrays

我想知道如何正确引用字节数组

我有一些原始数据类型,每个数据类型大几兆字节

byte[] data1, data2, data3, data4 ... ,data10;

data1 = ..(something 2MB big)
data2 = ..(something 2MB big)
data3 = ..(something 2MB big)
.
.
data10 = ..(something 2MB big)

我想将这10个字节[]安排到一个数组中(这是我的代码出错的地方)

private byte[] arrayofdatas[];
arrayofdatas[1] = data1;
arrayofdatas[2] = data2; 
.
.
etc.

我试过这个但是当arrayofdatas [1] = data1行时,我得到一个空指针异常 请帮我清理代码,很难找到这个确切的问题。

P.S。我需要将数据类型保留为byte []。请不要将它们转换为字符串。

编辑:我需要变量arrayofdatas作为字段变量。我遇到了问题,因为我不知道如何将其声明为字段。您的所有答案都使其成为本地并使用了“新”。另一件事......我已经将'10'设为我想要的字节[]的剩余数量。最终我希望这个数组无限制。有没有办法在添加更多byte []时添加到数组,以便将来可以有一个arrayofdata [500],而不必在开始时声明大小?

6 个答案:

答案 0 :(得分:4)

private byte[][] arrayofdatas = new byte[10][];

你可以在你的方法中使用它们。

arrayofdatas[0] = data1;
arrayofdatas[1] = data2;
.
.
etc.

请注意,您应将arrayofdatas声明为类的字段。或者,如果您想在方法中声明它,则应删除private修饰符。

答案 1 :(得分:3)

您的阵列未正确分配。如果您需要使用二维数组:

byte[][] arrayofdatas = new byte[10][];
arrayofdatas[1] = data1;
arrayofdatas[2] = data2; 
.
.
etc.

答案 2 :(得分:1)

byte data[][] =  new byte[10][];

data[0]= ..(something 2MB big)

答案 3 :(得分:0)

如果我理解正确你需要二维数组。

byte[][] arr2d = new byte[][];
byte [] data1, data2, ....;
arr2d[0] = data1;
arr2d[1] = data2;
///..............

我希望这有帮助,虽然你的问题可能告诉我你的设计并不那么理想。我建议你在这里发布你的任务描述以及你如何设计它。也许你们可以推荐你如何改进你的设计。

答案 4 :(得分:0)

为什么不这样做:

byte[][] data = new byte[10][];
for(int i=0; i<10; i++)
{
    byte[i] = ...  //fill your data here;
}

答案 5 :(得分:0)

您是否尝试过多维数组?我记得把它们用于String。如果他们为String做了...他们应该为任何其他数据类型,只要你分配字节数据:)

这应该有所帮助。

byte[][] arrayofdatas = new byte[10][];
arrayofdatas[1] = what you wanted for data1 ..(something 2MB big)