当前位置: 首页 > news >正文

4.3 二维数组

        如果一维数组中的各个元素仍然是一个数组,那么它就是一个二维数组。二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。

4.3.1创建二维数组

        二维数组可以看作是特殊的一维数组,因此二维数组的创建同样有两种方式。

1.先声明,再用new关键字进行内存分配

        声明二维数组的语法如下:

数组元素的类型 数组名字[][];
数组元素的类型[][] 数组名字;

        声明二维数组,代码如下:

int a[][];

        同一维数组一样,二维数组在声明时也没有分配内存空间,同样要使用new关键字来分配内存,然后才可以访问每个元素。对于高维数组,有两种为数组分配内存的方式。
第一种内存分配方式是直接为每一维分配内存空间,代码如下:

a = new int[2][4]

        上述代码创建了二维数组a,二维数组a中包括两个长度为4的一维数组。

        第二种内存分配方式是分别为每一维分配内存,代码如下:

a = new int[2][];

a[0] = new int[2];

a[1] = new int[3];

        上述代码创建了二维数组a,但是只声明了a第一维的长度,也就是“行数”,第二维的长度也就
是“列数”,则是为每一行单独声明的,因此创建的数组a是“不定长数组”。

2.声明的同时为数组分配内存

        第二种创建方式与第一种实现的功能相同,只不过声明与赋值合并到同一行代码中。例如,创建一个2行4列的二维数组,代码如下:

int a = new int[2][4]

4.3.2初始化二维数组

        二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。语法如下:

type arrayname[][] = {value1,value2…,valuen};

        ☑ type:数组数据类型。
☑ arrayname:数组名称,一个合法的标识符。
☑ value;二维数组中各元素,都代表一个一维数组。
初始化二维数组,代码如下:

int myarr[][] = {{12,0},{45,10}};

        初始化二维数组后,要明确数组的下标都是从0开始。例如,上面的代码中myarr[1][1]的值为10。
int型二维数组是以int a[][]来定义的,所以可以直接给a[x][y]赋值。例如,给a[1]的第2个元素赋值的语句如下:

a[1][1] = 20

4.3.3  使用二维数组

        二维数组在实际应用中用得非常广泛。下面的实例就是使用二维数组输出一个3行4列且所有元素都是0的矩阵。

        【例1】输出一个3行4列且所有元素都为0的矩阵
在项目中创建Matrix类,在主方法中编写代码实现输出一个3行4列且所有元素都为0的矩阵。实例代码如下:

public class Matrix{    //创建类public static void main(String[] args){    //主方法int a[][] = new int[3][4];    //定义二维数组for (int i = 0;i < a.length;i++){for(int j = 0;j < a[i].length;j++){    //循环遍历数组中的每个元素    System.out.print(a[i][j]);    //将数组中的元素输出}System.out.println();    //输出空格}}
}

运行结果如下:
0000
0000
0000

误区警示:

        对于整型二维数组,创建成功之后系统会给数组中每个元素赋子初始值0。

http://www.dtcms.com/a/511730.html

相关文章:

  • 【C语言实战(40)】C语言查找算法:从基础到实战的效率进阶
  • 洛谷 P2949 [USACO09OPEN] Work Scheduling G
  • 建站公司杭州南宁制作网站服务商
  • Deepseek-ocr论文精读
  • 【完整源码+数据集+部署教程】【文件&发票】发票信息提取系统源码&数据集全套:改进yolo11-ContextGuided
  • SpringBoot+Shiro+mybatis教务管理系统源码
  • 佛山个人制作网站公司手机百度下载免费安装
  • Git 项目开发核心指南:聚焦常用语法与完整流程
  • 【图像处理基石】遥感多光谱图像处理入门:从概念到实战(附Python代码)
  • Spring Boot项目中使用线程池并发插入6万条数据的线程池参数设置指南
  • 网站建设网站设计哪家专业东莞展馆设计公司
  • Docker Swarm:打造高效、可扩展的容器编排引擎,引领微服务新纪元(上)
  • 第15章:Spring AI Alibaba — 认识Graph框架
  • [Dify 实战] 构建一个自动发送邮件的插件:从 OpenAPI 到自动化通知
  • 基于Chrome140的FB账号自动化(关键词浏览)——脚本撰写(二)
  • CICD实战(8) - 使用Arbess+GitLab实现React.js项目自动化部署
  • 小程序uview actionSheet 内容过多高度设置
  • 基于.net的个人网站开发实录哪个网站建站比较好
  • 徐州做网站公司哪家好湘建网
  • 做头发个人网站制作素材专业网站设计制作服务
  • Linux初识进程
  • c#using Oracle.ManagedDataAccess.Client 批量保存数据
  • 人大金仓数据库kingbase8创建表示例
  • oracle包编译错误
  • 函数指针 指针函数 数组指针 指针数组 常量指针 指针常量
  • sqoop采集完成后导致hdfs数据与Oracle数据量不符的问题。怎么解决?
  • 洛阳有做网站开发的吗平台网站建设源码
  • 从零开始的C++学习生活 12:AVL树全面解析
  • Spring Boot 启动慢?启动过程深度解析与优化策略
  • telnet工具使用详解