「int[][] a = new int[3][];」実行直後のa[0]の状態はどうなっていますか。

多次元配列の2次元目以降を動的に確保する場合、指定されていない次元はnullで初期化されます。