1.默认初始值的情况

public static void main(String[] args) {
//    java基本语法(二维数组的内存解析)
//    下一行代码声明了外层数组,同时也声明了外层数组对应的一位数组有多少个值,内存解析见图1
    int[][] a = new int[4][3];
//    外层数据为a[0]、a[1]、a[2]、a[3]
//    内层数据为a[0][0]、a[0][1]等
    System.out.println(a[0]);//输出一位数组的地址:[I@15db9742
    System.out.println(a[0][0]);//输出默认值:0
//    内存解析见图2
    int[][] b = new int[4][];
    System.out.println(b[0]);//输出null,引用数据类型的的默认初始值
//    System.out.println(b[0][0]);//报错,本行无值和空间    
    int[][] c;
//    System.out.println(c[0]);没有初始化,则会报错
    }

对应的内存解析图,图一:
图片说明
对应的内存解析图,图二:
图片说明
2.基本操作

public static void main(String[] args) {
//    二维数组的基本操作
//    两种初始化操作
    int[][] a = new int[][] {{1,2,3},{1},{2,3},{1,2,34,5}};
    int[][] b = {{0,1,5},{0,12,5,6},{0,9}};
//    查看元素
    System.out.println("b[0] = " + b[0]);//b[0]是一位数组的地址值
    System.out.println("b[0][0] = " + b[0][0]);
//    获取数据长度
    System.out.println("a的行数 = " + a.length);//a的行数
    System.out.println("第0行的列数 = " + a[0].length);//第0行的列数
//    遍历数组
    for(int i = 0;i < a.length;i++) {
        for(int j =  0;j < a[i].length;j++) {
            System.out.print(a[i][j] + " ");
        }
        System.out.println(" ");
    }
    }