服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java中二维数组的正确使用方法介绍

Java中二维数组的正确使用方法介绍

2023-05-12 01:06未知服务器之家 Java教程

目录 一. 多维数组 1. 概念 2. 分类 二. 二维数组 1. 概念 2. 定义 3. 初始化 3.1 动态初始化 3.2 静态初始化 4. 扩展案例 4.1 动态初始化的变形写法 4.2 遍历二维数组 5. 内存分析 三. 多维数组 四. 结语 一. 多维数组 1. 概念 多维数组可以

目录
  • 一. 多维数组
    • 1. 概念
    • 2. 分类
  • 二. 二维数组
    • 1. 概念
    • 2. 定义
    • 3. 初始化
      • 3.1 动态初始化
      • 3.2 静态初始化
    • 4. 扩展案例
      • 4.1 动态初始化的变形写法
      • 4.2 遍历二维数组
    • 5. 内存分析
    • 三. 多维数组
      • 四. 结语

        一. 多维数组

        1. 概念

        多维数组可以看成是数组的数组。 比如二维数组就是一个特殊的一维数组,它的每个元素都是一个一维数组。其他多维数组的概念,大家可以参照二维数组以此类推。

        2. 分类

        多维数组可以分为:

        • 二维数组;
        • 三维数组;
        • 其他数组;

        其实我们在开发时,真正常用的数组也就是一维数组和二维数组,更多维度的数组很少使用。所以接下来在本篇文章中,主要是给大家讲解二维数组相关的内容。

        二. 二维数组

        1. 概念

        二维数组就是一种数组的数组,其本质上还是一个一维数组,只是它的数据元素又是一个一维数组。 如果你对这个概念想象不出来,给大家举个栗子,相信吸烟的同学一下子就会明白。

        一根烟 = 一个变量

        一包烟 = 20根烟 = 一维数组

        一条烟 = 10包烟 = 二维数组

        也就是说,我们买的”一条烟“,就是一种”二维数组“,明白了吧?

        2. 定义

        定义二维数组的基本语法如下:

        定义方式一:

        元素类型[][] 数组名称;

        定义方式二:

        元素类型 数组名称[][];

        在开发时,第一种定义方式更常用一些。这是数组的定义,我们还要对数组进行初始化。二维数组在初始化时,也分为动态初始化和静态初始化两种情况。我们可以把数组的定义和初始化在多条语句中分开完成,也可以直接放在一个语句中完成。

        3. 初始化

        3.1 动态初始化

        二维数组进行动态初始化时,语法格式如下:

        元素类型[][] 数组名称 = new 元素类型[二维数组的长度][一维数组的长度];

        例如:

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

        在上述示例中,表示我们定义了一个整型的二维数组arr。3表示在二维数组中有3个一维数组,每个一维数组就是一行;4表示每个一维数组中有4个数据元素,这样就形成了二维数组的4列。 这样我们就可以把这个二维数组arr看成是一个3行4列的数组或矩阵, 访问二维数组中的某个元素时,需要使用arr[row][col]的形式。所以二维数组中,总的元素个数最多有3*4=12个。

        以下是动态初始化的案例代码。

        /**
         * @author
         */
        public class Demo15 {
            public static void main(String[] args) {
        	// 二维数组--动态初始化
        
        	//二维数组在动态初始化时,必须指定二维数组的长度。
                //创建一个包含了3个一维数组的二维数组,每个一维数组的长度是2。
                int[][] arr2 = new int[3][2];
        
                //给二维数组赋值
                //给二维数组中的第一个一维数组赋值
                arr2[0][0] = 111;
                arr2[0][1] = 222;
        
                //给二维数组中的第二个一维数组赋值
                arr2[1][0] = 333;
                arr2[1][1] = 444;
        
                //给二维数组中的第三个一维数组赋值
                arr2[2][0] = 555;
                arr2[2][1] = 666;
        
                //二维数组取值
                System.out.println( "二维数组中第一个元素里的第一个元素"+arr2[0][0]);
                System.out.println( "二维数组中第一个元素里的第二个元素"+arr2[0][1]);
                System.out.println( "二维数组中第二个元素里的第一个元素"+arr2[1][0]);
                System.out.println( "二维数组中第二个元素里的第二个元素"+arr2[1][1]);
        
                //获取二维数组的长度
                System.out.println("二维数组的长度"+arr2.length);
                System.out.println("二维数组中第一个一维数组的长度"+arr2[0].length);
                System.out.println("二维数组中第二个一维数组的长度"+arr2[1].length);
                System.out.println("二维数组中第三个一维数组的长度"+arr2[2].length);
            }
        }

        注意:我们在对二维数组进行动态初始化时,必须先指定出二维数组的长度,但一维数组的长度可以后续使用前再单独指定。

        3.2 静态初始化

        二维数组中,每个一维数组的长度并不要求相同,可以各不相同。 二维数组进行静态初始化时,语法格式如下:

        元素类型[][] 数组名称 = new 元素类型[][]{{一维数组1,一维数组2,一维数组3....};

        例如:

        int[][] arr = new int[][]{{2,3},{5,2,1},{10,45,22,54}};

        但是这种方式的语法显得有些啰嗦,所以在实际开发时,我们一般是采用简化的静态初始化方式,如下所示:

        元素类型[][] 数组名称 =m{{一维数组1,一维数组2,一维数组3....};

        例如:

        int[][] arr = {{2,3},{5,2,1},{10,45,22,54}};

        以下是静态初始化的案例代码。

        /**
         * @author
         */
        public class Demo16 {
            public static void main(String[] args) {
        	// 二维数组--静态初始化
        
        	//静态初始化一个二维数组。静态初始化时可以很灵活
        	int[][] arr = {{11,22,33},{66,88}};
        		
                //给二维数组赋值。
        		//重新给二维数组中第一个一维数组里的第3个数据元素(即33)赋值,用99替换原来的33.
                arr[0][2] = 99;
                //重新给二维数组中第二个一维数组里的第1个数据元素(即66)赋值,用77替换原来的66.
                arr[1][0] = 77;
                
                //二维数组取值
                System.out.println( "二维数组中第一个一维数组里的第一个元素"+arr[0][0]);
                System.out.println( "二维数组中第一个一维数组里的第二个元素"+arr[0][1]);
                System.out.println( "二维数组中第二个一维数组里的第三个元素"+arr[0][2]);
                System.out.println( "二维数组中第二个一维数组里的第一个元素"+arr[1][0]);
                System.out.println( "二维数组中第二个一维数组里的第二个元素"+arr[1][1]);
                
                //获取二维数组的长度
                System.out.println("二维数组中的长度"+arr.length);
                System.out.println("二维数组中第一个一维数组的长度"+arr[0].length);
                System.out.println("二维数组中第二个一维数组的长度"+arr[1].length);
            }
        }

        以上是定义和初始化二维数组的基本案例,为了加深大家对二维数组的理解,接下来再设计几个代码案例,巩固二维数组的用法。

        4. 扩展案例

        4.1 动态初始化的变形写法

        如果我们在定义二维数组时,没有给定一维数组的长度,那么在使用数组之前,一定要先对一维数组进行初始化。 否则,此时如果直接使用一维数组,就会产生空指针异常java.lang.NullPointerException。

        /**
         * @author
         */
        public class Demo17 {
            public static void main(String[] args) {
        	//动态初始化时未限定一维数组的长度
        	int[][] arr = new int[3][];
        		
        	//如果我们在定义二维数组时,没有给定一维数组的长度,那么在使用数组之前,一定要初始化里面的一维数组。
        	//否则,如果直接使用一维数组,就会产生空指针异常java.lang.NullPointerException
        	// arr3[0][0] = 100;
        	//初始化一维数组
        	arr[0] = new int[2];
        	arr[1] = new int[1];
        	arr[2] = new int[4];
        
        	//给数组赋值
        	arr[0][0] = 1;
        	arr[0][1] = 2;
        	arr[1][0] = 10;
        	arr[2][0] = 100;
        	arr[2][1] = 200;
        	arr[2][2] = 300;
        	arr[2][3] = 400;
        
        	// 二维数组取值
        	System.out.println("二维数组中的第一个元素中的第一个元素" + arr[0][0]);
        	System.out.println("二维数组中的第一个元素中的第二个元素" + arr[0][1]);
        	System.out.println("二维数组中的第二个元素中的第一个元素" + arr[1][0]);
            }
        }

        arr[0]=new int[2] 和 arr [1]=new int[1] 是在为最高维分配引用空间,也就是限制了最高维能保存数据的最大长度。

        4.2 遍历二维数组

        因为二维数组中包含若干个一维数组,我们之前遍历一维数组时要使用一个循环,所以我们对二维数组进行遍历时就要使用嵌套的双重循环。当然,for/while/foreach等循环都可以使用。

        /**
         * @author 一一哥Sun 
         */
        public class Demo18 {
            public static void main(String[] args) {
        	// 二维数组--遍历
        	//定义一个二维数组
        	int[][] arr = {{11,22,33},{55,66},{77,88,99}};
        		
                //使用双重for循环,遍历二维数组
                //第一层循环:遍历二维数组中有几个一维数组
                for (int i = 0; i < arr.length; i++) {
                    //arr[i]是一维数组
                    //第二层循环:遍历每个一维数组
                    for(int j = 0 ; j < arr[i].length ; j++) {
                        System.out.println("二维数组中第"+(i+1)+"个一维数组里的元素"+arr[i][j]);
                    }
                }
            }
        }

        5. 内存分析

        对于一个二维数组来说,比如int[][] array={{10,0,0,20,0},{0,30,40,0,0},{0,0,0,0,0}};这个二维数组的结构如下图所示:

        Java中二维数组的正确使用方法介绍

        四. 结语

        至此,就把二维数组的内容给大家介绍完了,现在你知道如何使用二维数组了吗?二维数组的定义、动态和静态初始化、内存分析都是今天的重点,大家要牢牢掌握哦。

        以上就是Java中二维数组的正确使用方法介绍的详细内容,更多关于Java 二维数组的资料请关注其它相关文章!

        原文地址:https://juejin.cn/post/7204480721435361335

        延伸 · 阅读

        精彩推荐