首页IT科技二维数组的定义语句(二维数组的定义方式有几种)

二维数组的定义语句(二维数组的定义方式有几种)

时间2025-10-19 00:07:11分类IT科技浏览4396
导读:前言 在前几篇文章中,壹哥给大家介绍了Java里的一维数组,涉及到了数组的创建初始化、数组遍历、拷贝、扩容、排序、查找等核心内容,这些内容都是数组中的重点,希望大家要在这些知识点上多付出点时间和精力。但是我们知道,除了有一维数组之外,还有二维数组和多维数组,这些内容同样很重要。所以今天壹哥就在一维数组的基础上,继续...

前言

在前几篇文章中               ,壹哥给大家介绍了Java里的一维数组                      ,涉及到了数组的创建初始化               、数组遍历                      、拷贝        、扩容            、排序                      、查找等核心内容        ,这些内容都是数组中的重点            ,希望大家要在这些知识点上多付出点时间和精力                。但是我们知道                      ,除了有一维数组之外            ,还有二维数组和多维数组        ,这些内容同样很重要                       。所以今天壹哥就在一维数组的基础上                      ,继续给大家讲解多维数组的内容      。

-------------------------------------前戏已做完                ,精彩即开始------------------------------------

全文大约【3000】字    ,不说废话                      ,只讲可以让你学到技术            、明白原理的纯干货!本文带有丰富案例及配图                    ,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. 多维数组

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个                       。

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

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}};

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

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。

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等循环都可以使用                。

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}};这个二维数组的结构如下图所示:

array[0]会获取array数组的第1个元素            ,因为array数组的每个元素都是一个一维数组                      ,因此array[0]指向的数组就是{ 10, 0, 0, 20, 0 }            ,其他的以此类推                       。

高维数组中的每个数据元素        ,保存的是低位数组的首地址      。所以我们访问array[0]就相当于是在访问二维数组中的第一个一维数组的首地址                      ,这样就可以得到第一个一维数组            。

三. 多维数组

理论上                ,在Java中我们可以定义出任意维度的数组                        。但高于二维的多维数组    ,在实际开发中很少使用                      ,大家知道Java中支持这种数据结构即可          。如果你感兴趣                    ,可以尝试着自己构造一个三维数组出来,壹哥就不在这里过多讲解啦                  ,可以参考如下:

//动态初始化 int[][][] arr= new int[3][3][2]; //静态初始化 int[][][] arr2= { { {1,2,3},{4,5,6},{7,8,9} }, { {1,2},{3,4} }, { {1,2},{3,4,5} } };

-----------------------------------------正片已结束                       ,来根事后烟---------------------------------------

四. 结语

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

在下一篇文章中        ,会给大家讲解Java里的可变参数            ,敬请期待哦                        。另外如果你独自学习觉得有很多困难                      ,可以加入的学习互助群            ,我们一起交流学习              。

六. 今日作业

1. 第一题

利用二维数组        ,打印出一个杨辉三角形来    。

声明:本站所有文章                      ,如无特殊说明或标注                ,均为本站原创发布                        。任何个人或组织    ,在未征得本站同意时                      ,禁止复制                、盗用    、采集                      、发布本站内容到任何网站                    、书籍等各类媒体平台                  。如若本站内容侵犯了原著者的合法权益                    ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
win11键盘快捷键设置在哪里(Win11 常用快捷键一览:附使用及记忆方法)