`
zhongzhao_2008
  • 浏览: 36128 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
最近访客 更多访客>>
社区版块
存档分类
最新评论

数组的学习4

阅读更多
Java编程那些事儿48—多维数组基础
出自:http://blog.csdn.net/mailbomb
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中总的元素个数。
分享到:
评论

相关推荐

    数组学习心得

    4. Java Array 1) 数组变量的声明 int[] ary; 声明了数组变量 ary, 数组变量是代词, int ary[]; 为了与C语法兼容的写法, 不建议写法, 2) 数组对象动态初始化 ary = new int[4]; //数组变量引用了具体数组对象...

    asp.net c# 数组学习

    一维数组类似于线性列表,多维数组则可以理解为表格形式的数据,而交错数组是由多个数组组成的数组,每个子数组可以有不同的大小。 声明不同类型的数组示例如下: - 一维数组:`int[] numbers` - 多维数组:`...

    C语言数组学习教案.pptx

    "C语言数组学习教案" 本节课件主要讲解C语言中的数组知识点,包括数组的定义、引用、初始化等基本概念和操作。 一、数组的定义 在C语言中,数组是一种构造数据类型,由基本数据类型通过一定的规则组合而成。定义...

    VB数组学习教案.pptx

    VB数组学习教案.pptx

    php数组学习之一

    本篇文章将聚焦于“php数组学习之一”,深入探讨PHP数组的基础概念、类型、创建方式以及一些常用的数组操作函数。 首先,PHP中的数组分为索引数组和关联数组两种类型。索引数组是由数字索引(默认从0开始)组成的...

    C++数组的学习笔记(入门).docx

    C++数组的学习笔记(入门) C++数组是一种重要的数据结构,数组是相同类型元素的集合。在C++中,数组可以分为一维数组、二维数组和字符数组等。本文将对C++数组的定义、初始化和引用进行详细的介绍。 一维数组 一...

    c++数组学习资料

    c++数组学习资料

    数组参数学习内容

    4. **函数签名**:明确函数签名,确保其他开发者明白函数如何处理数组参数,特别是是否允许修改原始数组。 学习数组参数的另一个重要方面是了解如何有效地利用数组参数进行多维数组的处理。例如,在二维数组(矩阵...

    VBA数组学习笔记.pdf

    VBA 数组学习笔记 VBA 数组学习笔记是指在 Visual Basic for Applications(VBA)中对数组的学习和应用。数组是 VBA 编程中非常重要的一部分,它可以用来存储和处理大量的数据。 数组的声明 在 VBA 中,数组的...

    易语言动画框数组学习

    本主题聚焦于“易语言动画框数组学习”,这是一段用于理解与操作动画框数组的源代码。 动画框在易语言中是一个重要的图形用户界面(GUI)元素,它可以显示动态图像或动画效果,通常用于增强程序的视觉表现力。动画...

    C语言教学之数组学习教案.pptx

    C语言教学之数组学习教案.pptx

    PHP之数组学习

    今天学习了数组,可以说是PHP的数据应用中较重要的一种方式。PHP的数组函数众多,下面是我学习的小结,借此记之,便于以后鉴之…… 一、数组定义: 数组的定义使用 array()方式定义,可以定义空数组: 复制代码 ...

    C语言二维数组学习教案.pptx

    C语言二维数组学习教案.pptx

    动画框数组学习.rar

    本资源“动画框数组学习.rar”显然是一个压缩包,包含了一个易语言(EasyLanguage)的源代码示例,用于教授如何使用动画框数组进行编程。易语言是一款面向初学者的中文编程软件,它的语法简洁明了,适合初学者学习...

    动态数组 学习C++的经典例子

    这个“动态数组学习C++的经典例子”很可能是包含了一些演示如何使用C++管理动态数组的代码示例。 动态数组主要通过C++中的指针和内存管理函数来实现。在C++中,我们通常使用`new`操作符来动态分配内存,创建一个可...

    JAVA数组学习教程

    【JAVA数组学习教程】 在Java编程中,数组是一种基础且重要的数据结构,它允许程序员存储一组具有相同类型的元素。数组的使用是程序设计中的常见环节,尤其对于初学者来说,理解数组的概念和操作至关重要。 首先,...

    E4A易安卓视频教程源码: - 06、数组和集合.rar

    在本资源中,我们主要关注的是"E4A易安卓视频教程源码: - 06、数组和集合.rar",这是一份针对易安卓(EasyAndroid,简称E4A)编程语言的学习材料,特别是关于数组和集合的部分。易安卓是一个为非专业程序员设计的...

    VBA数组的学习笔记,让你更好的了解数组

    ### VBA数组学习笔记 #### 一、数组的声明与初始化 在VBA中,数组是一种非常重要的数据结构,用于存储一系列同类型的值。数组的声明与其他变量类似,可以通过`Dim`、`Static`、`Private`或`Public`语句进行。与...

    c语言数组学习

    c语言数组学习

Global site tag (gtag.js) - Google Analytics