关于java中的二维数组的空间分配问题

在学习java的过程中,碰到这样一个问题
二维数组的问题:
首先1:
规则二维数组的几种写法,其中有一种:
int a[][] = new int[4][10];
这个我是知道的,分配一个4*10的空间
但是:
接下来却写到:
a[0] = new int[10];
a[1] = new int[10];
我不明白的是刚开始已经分配过空间了,为什么后来还要分配呢,望各位能解答
在下先谢谢各位了

数组的数组的含义是,这是一个数组,数组的每个元素是一个数组。
数组的数组和二维数组的不同在于,数组的数组每个下标代表的数组可以不一样长,而二维数组是一样长的。
比如
int a[][] = new int[4][];
a[0] = new int[10];
a[1] = new int[5];
a[2] = null;
a[3] = new int[1];
这样是完全允许的。

int a[][] 这个不是二维数组,而是数组的数组
第一次初始化的是数组的数组
第二次初始化的是数组的数组中的一个元素,也就是数组