想象一个数组定义如下:
int n = 10;
int[][] arr = new int[0][n];
让我们说这个数组在没有保留n的情况下传递给几个方法。我们可以从这个数组中获得n吗?
arr [0] .length肯定不会工作。
答案 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组件。