多维数组的使用
Posted 滴水穿石不是靠力,而是因为不舍昼夜。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多维数组的使用相关的知识,希望对你有一定的参考价值。
多维数组概述
Java 语言里提供了支持多维数组的语法。
如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,像Excel中的表格、围棋棋盘一样。
应用举例1:
某公司2022年全年各个月份的销售额进行登记。按月份存储,可以使用一维数组。如下:
int[] monthData = new int[]23,43,22,34,55,65,44,67,45,78,67,66;
如果改写为按季度为单位存储怎么办呢?
int[][] quarterData = new int[][]23,43,22,34,55,65,44,67,45,78,67,66;
应用举例2:
高一年级三个班级均由多个学生姓名构成一个个数组。如下:
String[] class1 = new String[]"段誉","令狐冲","任我行"; String[] class2 = new String[]"张三丰","周芷若"; String[] class3 = new String[]"赵敏","张无忌","韦小宝","杨过";
那从整个年级看,我们可以声明一个二维数组。如下:
String[][] grade = new String[][]"段誉","令狐冲","任我行","张三丰","周芷若","赵敏","张无忌","韦小宝","杨过";
应用举例3:
蓝框的几个元素,可以使用一维数组来存储。但现在发现每个元素下还有下拉框,其内部还有元素,那就需要使用二维数组来存储:
使用说明
对于二维数组的理解,可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组。
声明与初始化
声明
二维数组声明的语法格式:
//推荐 元素的数据类型[][] 二维数组的名称; //不推荐 元素的数据类型 二维数组名[][]; //不推荐 元素的数据类型[] 二维数组名[];
例如
//存储多组成绩 int[][] grades; //存储多组姓名 String[][] names;
格式:
int[][] arr = new int[][]3,8,2,2,7,9,0,1,6;
定义一个名称为arr的二维数组,二维数组中有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组 arr[0] = 3,8,2;
第二个一维数组 arr[1] = 2,7;
第三个一维数组 arr[2] = 9,0,1,6;
第三个一维数组的长度表示方式:arr[2].length;
注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。
举例1
int[][] arr = 1,2,3,4,5,6,7,8,9,10;//声明与初始化必须在一句完成 int[][] arr = new int[][]1,2,3,4,5,6,7,8,9,10; int[][] arr; arr = new int[][]1,2,3,4,5,6,7,8,9,10; arr = new int[3][3]1,2,3,4,5,6,7,8,9,10;//错误,静态初始化右边new 数据类型[][]中不能写数字
举例2:
//存储多组成绩 int[][] grades = 89,75,99,100, 88,96,78,63,100,86, 56,63,58, 99,66,77,88 ; //存储多组姓名 String[][] names = "张三","李四", "王五", "赵六", "刘备","关羽","张飞","诸葛亮","赵云","马超", "曹丕","曹植","曹冲", "孙权","周瑜","鲁肃","黄盖" ;
关于多维数组的注意事项
1、对于多维数组的理解,多维数组就是数组的数组,数组元素还是数组称之为二维数组。
2、《C++Primer fifth》中提到,要想更好地理解多维数组,应该从内向外阅读定义。
3、多维数组初始化时,每一行用一个花括号括起来,也可以省略。可以显示的初始化每行的首元素,也可以显示的只初始一行元素。
4、使用下标运算符访问多维数组元素,每个维度对应一个下标运算符。
5、使用范围for语句去处理多维数组时,都需要将最外层的控制变量声明为引用,不管是否修改控制变量的值,否则编译器会自动将控制变量的类型推断成指针。
6、多维数组名转换来的指针是指向第一个内层元素也就是第一个内层数组的指针。对其进行解引用,可以得到第一个内层数组的首元素的地址,其内层数组数组名会自动转换为指向本数组首元素的指针。
以上是关于多维数组的使用的主要内容,如果未能解决你的问题,请参考以下文章