如何理解数组长度

时间:2016-03-10 22:49:01

标签: java arrays

我有这样的方法:

private static byte [] rec (byte []...n) {
    int nob = n[0].length - 1;
    System.out.println("The length of this is : " + nob);
}

在我的主要方法中,我这样称呼它:

byte [][] shar = one.calculatethresholdscheme(secret, n,k, new SecureRandom());

byte [][] sharesToViewSecret = new byte[] []{shar[0],shar[1],shar[3],shar[6]};

// when we say n[0], n[2], n[3] we are talking for the rows of byte [] [] n which keeps the index from 0 to 7
byte [] recoverSecret = one.rec(sharesToViewSecret);

然后当我把它打印出来时,它给了我一个我没想到的结果。任何人都可以解释n[0].length - 1;的含义吗?

实际上我希望得到结果4,因为我使用了四个shar[...]作为方法参数,但它给了我结果11,这实际上是我文件的字节数

2 个答案:

答案 0 :(得分:2)

声明

private static byte [] rec (byte []...n)

(somewhat) equivalent

private static byte [] rec (byte [][] n)

rec方法中,n是一个字节数组。 n[0]是这些数组中的第一个。

当您致电rec时,n的第一个元素是shar[0],因此n[0].length正在给您shar[0].length。如果您想要n中的元素数量,则只需要n.length

答案 1 :(得分:-2)

我很确定n[0].length - 1;表示取n个数组中第0个术语的长度,然后它将从长度中减去1。例如,如果第0个术语是“Hello”,则长度将为“4”,然后代码将从4中减去1并得到3.请记住,在java和其他语言中,您从0开始计数而不是1。 希望这会有所帮助。