二维数组

二维数组

就是元素是一维数组的数组

举例

{{1,2},{3,4},{5,6}}

 

 定义格式:

  • 格式1:

数据类型[][]  变量名 = new 数据类型[m][n];


左边:

        数据类型:表示一维数组中元素的数据类型

        [][]:表示是一个二维数组

        变量名:二维数组的名称

右边:

        new:表示为二维数组分配内存空间

        [m]:表示这个二维数组中有个m元素,其中m个元素表示的是m个一维数组

        [n]:表示的是每一个一维数组中有n个元素,元素的数据类型与定义时的数据类型一致

举例:

int[][] arr = new int[3][2]


解释:

表示的是定义了一个名为arr的二维数组,元素是由3个一维数组组成,其中每个一维数组的元素的个数为2个

例如:{{1,2},{3,4},{5,6}}

 

格式的转换:

1、今后开发的时候就按照上面定义的格式去定义,但是看到以下定义的格式也算正确


a: 数据类型 变量名[][] = new 数据类型[m][n];

b: 数据类型[] 变量名[] = new 数据类型[m][n];


举例:

int[][] arr = new int[2][3]; (推荐第一种)

int arr[][] = new int[3][4];

int[] arr[] = new int[2][3];

 

程序示例
public class Array2Demo1 {

    public static void main(String[] args) {




        //定义一个二维数组

        int[][] arr = new int[3][2];

        //3代表的是由三个一维数组组成

        //2代表的是每一个一维数组的元素个数为2个




        //按照之前的输出格式,我们先输出名字

        System.out.println(arr);    //   [[I@4554617c    //   输出的是二维数组在堆内存中的地址值

        System.out.println(arr[0]);    //   [I@74a14482    //   输出的是第一个一维数组在内存中的地址值

        System.out.println(arr[1]);    //   [I@1540e19d    //   输出的是第二个一维数组在内存中的地址值

        System.out.println(arr[2]);    //   [I@677327b6    //   输出的是第三个一维数组在内存中的地址值




        //数组获取元素的方法是,通过索引获取

        System.out.println(arr[0][0]);    //   0     //   输出的是第一个一维数组中第一个元素值

        System.out.println(arr[0][1]);    //   0     //   输出的是第一个一维数组中第二个元素值




        //ArrayIndexOutOfBoundsException: 2   数组下标索引越界异常,没有对应的索引

        //System.out.println(arr[0][2]);   //   第一个一维数组中没有第三个元素值




        //输出第三个一维数组的第二个元素值

        System.out.println(arr[2][1]);

    }

}

 

  • 格式2:

数据类型[][]  变量名 = new 数据类型[m][];

 左边:

数据类型:表示最终元素的数据类型

[][]:表示是一个二维数组.

变量名:二维数组的名称

右边:

new:为二维数组开辟堆内存空间

数据类型:表示的是最终元素的数据类型,每个一维数组中元素数据类型

[m]:这个二维数据由m个一维数组组成

[]:这里暂时没有将每个一维数组中的元素个数写死,由将来传入的一维数组元素的个数而定

举例:

int[][] arr = new int[3][]

程序示例

public class Array2Demo2 {

    public static void main(String[] args) {




        //使用第二种格式定义一个二维数组

        int[][] arr = new int[3][];

        //表示的是定义了一个二维数组,由3个一维数组当作元素组成

        //只不过每一个一维数组的元素个数没有定




        System.out.println(arr); //   输出的是二维数组本身的地址值

        System.out.println(arr[0]); //   输出的是二维数组中第一个一维数组的地址值 null(引用数据类型的系统默认值为null)

        System.out.println(arr[1]); //   输出的是二维数组中第二个一维数组的地址值 null

        System.out.println(arr[2]); //   输出的是二维数组中第三个一维数组的地址值 null




        //java.lang.NullPointerException    空指针异常,说明没用任何实例

        //System.out.println(arr[0][0]);  




        //将二维数组中每一个元素添加一个一维数组

        //初始化一个元素个数为2个的一维数组,赋值给二维数组中第一个元素

        arr[0] = new int[2];

        //初始化一个元素个数为3个的一维数组,赋值给二维数组中第二个元素

        arr[1] = new int[3];

        //初始化一个元素个数为4个的一维数组,赋值给二维数组中第三个元素

        arr[2] = new int[4];




        System.out.println(arr); //   输出的是二维数组本身的地址值

        System.out.println(arr[0]); //   输出的是二维数组中第一个一维数组的地址值

        System.out.println(arr[1]); //   输出的是二维数组中第二个一维数组的地址值

        System.out.println(arr[2]); //   输出的是二维数组中第三个一维数组的地址值




        //获取二维数组中第二个一维数组中的第1个元素

        System.out.println(arr[1][0]);

    }
}

 

 

  • 格式3:

数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…},...};

左边:

       数据类型:表示最终元素的数据类型

       [][]:表示是一个二维数组

       变量名:二维数组的名称

右边:

        new:为二维数组在堆内存中开辟空间

        数据类型:表示的是最终每个一维数组中元素的数据类型

        [][]:表示的是一个二维数组

        {{元素…},{元素…},{元素…},...}:表示的是将来自定义多少个一维数组,以及每个一维数组中的元素个数也可以不一样

                

举例:

int[][] arr = new int[][]{{1,2},{11,22,33},{100,200,300},{10,20}};

表示的是定义一个二维数组,二维数组中的元素是由4个一维数组组成,

每个一维数组中的元素个数不一样。

有点类似于一维数组的静态初始化,前两个格式有点类似于一维数组的动态初始化。

简化格式:

数据类型[][] 变量名 = {{元素…},{元素…},{元素…},...};

举例:

int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20}};


错误的格式:

不能和格式1,格式2混合使用

int[][] arr = new int[3][]{{1,2},{11,22,33},{100,200,300},{10,20}};


 程序示例
public class Array2Demo3 {

    public static void main(String[] args) {




        //使用二维数组定义格式3定义   //简化版的

        int[][] arr = {{1,2},{11,22,33},{100,200,300},{10,20,30,40}};




        System.out.println(arr);    //   输出二维数组本身的地址值

        System.out.println(arr[0]);    //   输出二维数组中第一个一维数组的地址值

        System.out.println(arr[1]);    //   输出二维数组中第二个一维数组的地址值

        System.out.println(arr[2]);    //   输出二维数组中第三个一维数组的地址值

        System.out.println(arr[3]);    //   输出二维数组中第四个一维数组的地址值




        //输出二维数组中第一个一维数组中的第一个元素值

        System.out.println(arr[0][0]);

        //输出二维数组中第一个一维数组中的第二个元素值

        System.out.println(arr[0][1]);

        //输出二维数组中第三个一维数组中的第一个元素值

        System.out.println(arr[2][0]);

        //输出二维数组中第四个一维数组中的第三个元素值

        System.out.println(arr[3][2]);

    }
}

 

posted @ 2021-11-30 20:08  赤兔胭脂小吕布  阅读(226)  评论(0编辑  收藏  举报