Java编程那些事儿48—多维数组基础
郑州游戏学院 陈跃峰
6.4 多维数组基础
在学校里,由于一个班的人数不多,所以按照顺序编号即可,当人数增多时,例如对于学校里的人,在编号时就要增加层次,例如XX班XX号。在部队中也是这样,XX师XX团XX营XX连XX排XX班,这里的层次就比较深了。为了管理数据的方便,一般要加深管理的层次,这就是多维数组的由来。
多维数组,指二维以及二维以上的数组。二维数组有两个层次,三维数组有三个层次,依次类推。每个层次对应一个下标。
在实际使用中,为了使结构清晰,一般对于复杂的数据都是用多维数组。
关于多维数组的理解,最终的是理解数组的数组这个概念,因为数组本身就是一种复合数据类型,所以数组也可以作为数组元素存在。这样二维数组就可以理解成内部每个元素都是一维数组类型的一个一维数组。三维数组可以理解成一个一维数组,内部的每个元素都是二维数组。无论在逻辑上还是语法上都支持“数组的数组”这种理解方式。
通常情况下,一般用二维数组的第一维代表行,第二维代表列,这种逻辑结构和现实中的结构一致。
和一维数组类似,因为多维数组有多个下标,那么引用数组中的元素时,需要指定多个下标。
6.5 多维数组语法
下面以二维数组为例,来介绍多维数组的语法。
6.5.1 多维数组声明
多维数组的声明:
数据类型[][] 数组名称;
数据类型[]数组名称[];
数据类型 数组名称[][];
以上三种语法在声明二维数组时的功能是等价的。同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推。
例如:
int[][] map;
char c[][];
和一维数组一样,数组声明以后在内存中没有分配具体的存储空间,也没有设定数组的长度。
6.5.2 多维数组初始化
和一维数组一样,多维数组的初始化也可以分为静态初始化(整体赋值)和动态初始化两种,其语法格式如下。
6.5.2.1 静态初始化
以二维数组的静态初始化为例,来说明多维数组静态初始化的语法格式。示例代码如下:
int[][] m = {
{1,2,3},
{2,3,4}
};
在二维数组静态初始化时,也必须和数组的声明写在一起。数值书写时,使用两个大括号嵌套实现,在最里层的大括号内部书写数字的值。数值和数值之间使用逗号分隔,内部的大括号之间也使用逗号分隔。
由该语法可以看出,内部的大括号其实就是一个一维数组的静态初始化,二维数组只是把多个一维数组的静态初始化组合起来。
同理,三维数组的静态初始化语法格式如下:
int[][][] b = {
{
{1,2,3},
{1,2,3}
},
{
{3,4,1},
{2,3,4}
}
};
说明:这里只是演示语法格式,数值本身没有意义。
6.5.2.2 动态初始化
二维数组动态初始化的语法格式:
数据类型[][] 数组名称 = new 数据类型[第一维的长度][第二维的长度];
数据类型[][] 数组名称;
数组名称 = new 数据类型[第一维的长度][第二维的长度];
示例代码:
byte[][] b = new byte[2][3];
int m[][];
m = new int[4][4];
和一维数组一样,动态初始化可以和数组的声明分开,动态初始化只指定数组的长度,数组中每个元素的初始化是数组声明时数据类型的默认值。例如上面初始化了长度为2X3的数组b,和4X4的数组m。
使用这种方法,初始化出的第二维的长度都是相同的,如果需要初始化第二维长度不一样的二维数组,则可以使用如下的格式:
int n[][];
n = new int[2][];//只初始化第一维的长度
//分别初始化后续的元素
n[0] = new int[4];
n[1] = new int[3];
这里的语法就体现了数组的数组概念,在初始化第一维的长度时,其实就是把数组n看成了一个一维数组,初始化其长度为2,则数组n中包含的2个元素分别是n[0]和n[1],而这两个元素分别是一个一维数组。后面使用一维数组动态初始化的语法分别初始化n[0]和n[1]。
6.5.3 引用数组元素
对于二维数组来说,由于其有两个下标,所以引用数组元素值的格式为:
数组名称[第一维下标][第二维下标]
该表达式的类型和声明数组时的数据类型相同。例如引用二维数组m中的元素时,使用m[0][0]引用数组中第一维下标是0,第二维下标也是0的元素。这里第一维下标的区间是0到第一维的长度减1,第二维下标的区间是0到第二维的长度减1。
6.5.4 获得数组长度
对于多维数组来说,也可以获得数组的长度。但是使用数组名.length获得的是数组第一维的长度。如果需要获得二维数组中总的元素个数,可以使用如下代码:
int[][] m = {
{1,2,3,1},
{1,3},
{3,4,2}
};
int sum = 0;
for(int i = 0;i < m.length;i++){//循环第一维下标
sum += m[i].length; //第二维的长度相加
}
在该代码中,m.length代表m数组第一维的长度,内部的m[i]指每个一维数组元素,m[i].length是m[i]数组的长度,把这些长度相加就是数组m中总的元素个数。
分享到:
相关推荐
总之,“易语言赋值定义多维数组”是一个基础但重要的编程概念,掌握了它,你就能在易语言中处理更复杂的数据结构,开发出更富有功能的程序。通过不断的实践和学习,你可以熟练地运用多维数组解决各种实际问题。
### Java多维数组详解 #### 一、多维数组的概念与背景 多维数组是指具有两个或更多维度的数组,通常我们所说的多维数组至少包括二维数组和更高维度的数组。在现实生活中,多维数组的应用场景十分广泛,比如学校的...
在编程语言中,多维数组通过声明数组的维度和大小来创建,例如在C++中,我们可以声明一个二维数组`int arr[3][4]`,表示一个包含3行4列的整数矩阵。 接下来,我们要讨论多维数组的存储方式。在内存中,多维数组通常...
多维数组可以理解为数组的数组,它能够存储二维或更高维度的数据,比如表格、矩阵等。 本资源名为“易语言重定义多维数组源码”,意味着它提供了一种方法来重新定义已经创建的多维数组。在易语言中,动态调整数组...
多维数组下标计算 多维数组下标计算是指在计算机科学和编程语言中,对多维数组的元素进行访问和操作的过程。...多维数组下标计算是多维数组的基础操作,对于编程语言和计算机科学的发展具有重要意义。
在C#编程语言中,多维数组是一种非常重要的数据结构,它允许我们存储二维或更高维度的数据。在本教程中,我们将深入探讨如何创建、初始化和操作多维数组,以及如何实现它们的输入和输出。 首先,让我们了解什么是...
通过实验,我们可以学习如何使用多维数组来解决问题,并提高自己的编程能力。 实验一:计算多维数组中的平均值 在这个实验中,我们使用多维数组来计算数组中的平均值。我们首先定义了两个数组 a 和 b,其中数组 a ...
### 数据结构多维数组课程设计知识点解析 #### 一、问题背景与目标 在计算机科学领域,特别是数据结构的学习和应用中,多维数组是一种重要的数据组织方式。它能够有效地处理多维数据,如图像处理、矩阵运算等场景...
在编程语言Visual Basic (VB) 中,多维数组是一种存储数据的有效方式,它允许程序员在一个变量中存储多个数据集合。这种数据结构对于处理表格、矩阵或其他具有多个维度的数据非常有用。本篇将深入探讨VB中的多维数组...
在探讨“1.8编程基础之多维数组_08矩阵加法”这一主题时,我们需要关注多个方面的知识点,包括编程基础、多维数组的定义和使用、矩阵加法的概念以及信息学奥林匹克竞赛(NOIP)的培训课程内容。 首先,我们来了解...
多维数组是计算机科学中处理复杂数据的一种基础结构,它能够帮助我们有效地存储和操作矩阵或类似表格的数据。在这个课程设计中,我们将深入理解多维数组的概念,并通过编程实现一个高效的模拟系统。 首先,我们需要...
当需要返回的数据结构复杂,如多维数组时,编程者需要掌握特定的技巧来实现这一功能。本篇文章将深入探讨易语言中子程序如何返回多维数组,以及如何处理列表框数组。 首先,我们要理解易语言中的数组概念。数组是一...
在实际编程中,我们可能会遇到动态调整大小的多维数组需求,这时可以使用动态数组(如C++的`std::vector`)或者自定义的数据结构来实现。此外,一些高级数据结构,如稀疏矩阵,是在多维数组基础上优化的,用于存储...
在本段内容中,介绍了有关多维数组在编程竞赛中的应用,特别是针对CSP-J CSP-S (中国计算机学会青少年计算机程序设计竞赛初级组和高级组,通常称为信奥) 的相关题目。以下是详细知识点: 1. 多维数组的概念及其在...
在C++编程语言中,动态创建多维数组是一种在运行时确定数组大小并分配内存的方法。这与静态数组不同,静态数组在编译时就需要指定大小。动态创建数组提供了更大的灵活性,特别是在处理不确定数据量或者需要根据用户...
Java语言编程 多维数组 Java语言编程中,多维数组是数组的数组,一维数组中的每个成员又是一维数组。二维数组是最常见的多维数组形式。 1. 定义二维数组 定义二维数组的基本格式有两种: 方式一:`dataType [][]...
在VB(Visual Basic)编程中,多维数组是一种强大的数据结构,它允许程序员存储和处理多个数据集合。这个“VB 做的多维数组实例程序”提供了实践操作多维数组的机会,通过逐步调试,我们可以深入理解其工作原理。 ...
2018/06/10 周日 16:48 634 14扫雷游戏地雷数计算.cpp 2018/06/10 周日 16:58 1,034 15细菌的繁殖于扩散.cpp 2018/06/14 周四 21:06 854 16矩阵石头剪刀布.cpp 2018/06/14 周四 21:10 481 17最好的草.cpp 2018/06/14...
在Java编程语言中,数组是一种重要的数据结构,用于存储同类型的数据集合。本实例将深入讲解一维数组和多维数组的初始化与基本操作。数组是内存中的连续区域,通过索引来访问其元素,这对于快速访问和处理大量数据...
### 交错数组与多维数组分析 #### 一、交错数组(Jagged Arrays)概念解析 交错数组在编程语言中通常指的是元素为不同长度数组的一维数组。这种数组结构允许每个子数组拥有不同的长度,因此非常适合处理那些每行...