找到长度为零的2D数组的宽度

时间:2015-11-05 02:18:01

标签: java arrays 2d

想象一个数组定义如下:

int n = 10;
int[][] arr = new int[0][n];

让我们说这个数组在没有保留n的情况下传递给几个方法。我们可以从这个数组中获得n吗?

arr [0] .length肯定不会工作。

2 个答案:

答案 0 :(得分:3)

  

我们可以从这个数组中获得n吗?

没有

我想的就是这个。这条线

int[][] arr = new int[a][b];

基本相同
int[][] arr = new int[a][];
for (int i = 0; i < a; i++)
    arr[i] = new int[b];

如果a == 0,则for循环不执行任何操作,因此b的值无关紧要。

答案 1 :(得分:1)

因为这个数组中的每个第二级都是不同的,所以你将无法找到它。

考虑一下:

    int[][] a = new int[10][20];
    a[0] = new int[5];
    a[1] = new int[8];
    for(int[] x : a) {
        System.err.println(x.length);
    }

你将会看到每个X组件实际上是一个指向另一个int []对象的指针,该对象可以独立设置和监视。通过做

   int[][] a = new int[0][n];

你实际上从未创建任何指针,也没有在那里创建任何Y组件。