数组与内存控制

多维数组:

如果已知类型是int,增加方括号int[]类型,这是一维数组,这是一个数组类型;如果再以int[]类型为已有类型,增加括号就得到int[][]类型,这依然是数组类型;如果再以int[][]类型为已有类型,增加方括号就得到int[][][]类型,这 依然是数组类型。

将数类型 的方括号去掉就得到了数组元素的类型。对于int[][][]类型的数组,其数组元素就相当于int[][]类型的变量;对于int[][]类型的数组,其数组元素就相当于int[]类型的变量;对于int[]

类型的数组,其数组元素就相当于int类型的变量。

从上面的分析可以看出,所谓多维数组,其实只是数组元素依然是数组的1维数组:2维数组时数组元素是1维数组的数组,3维数组时数组元素师2维数组的数组。。。N维数组是元素N-1维数组的数组。

public class TwoDimensionTest {
    public static void main(String[] args) {
        //定义2维数组
        int[][] a;

        //把a当成1维数组进行初始化,初始化a为一个长度为4的数组
        //a数组的数组元素又是引用类型
        a = new int[4][];

        //把a数组当成1维数组,遍历a数组的每个数组元素
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }

        //初始化a数组的第1个元素
        a[0]=new int[2];

        //访问a数组的第一个元素所指数组的第2个元素
        a[0][1] = 6;

        //a数组的第1个元素是1个1维数组,遍历这个1维数组
        for (int i = 0; i < a[0].length; i++) {
            System.out.println(a[0][i]);
        }
    }
}

程序第一行int[][]a

程序对a数组执行初始化;a=new int[4][]。这行代码让a变量指向一块长度为4的数组内存。

  数组的length属性精确地说应该是返回系统为该数组所分配的连续内存空间的长度

由于a数组的元素只能是int[]数组,所以接下来的程序对a[0]元素执行初始化,也就是让图所示堆内存的中第1个数组元素指向一个有效int[]数组对象---一个长度为2int数组。因此程序采用动态初始化a[0]数组,所以系统将为a[0]的每个元素分配默认初始化0,然后程序显式为a[0]数组的第2个元素赋值6

原文地址:https://www.cnblogs.com/masahiro/p/10131056.html