首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第一章:容器概述
第二章:数组简介
第三章:数组的声明和初始化
第四章:数组元素的访问
第五章:数组的遍历
第六章:数组元素的默认值
第七章:数组内存示意图
第八章:数组练习题
第九章:二维数组
第十章:Arrays工具的使用
第十一章:数组使用中的常见异常
当前位置:
首页>>
技术小册>>
Java语言基础4-数组详解
小册名称:Java语言基础4-数组详解
9.1 概述 - 二维数组本质上就是元素为一维数组的数组。 - 二维数组的标记:[][] 。 ```bash int[][] arr; // arr是一个二维数组,可以看成是int[]一维数组的一个数组 ``` 二维数组也可以看成是一个二维表,行和列组成的二维表,只不过这个二维表中的每一行的列数可能不同。但是每一个单元格中的元素的数据类型是一致的,例如,都是 int、String 等类型。 9.2 二维数组的语法 9.2.1 动态初始化1 语法: ```bash 数据类型[][] 数组名 = new 数据类型[m][n] ``` - 解释: - m 表示这个二维数组有多少个一维数组。换言之,一共多少行。 - n 表示每个一维数组中的元素有多少个,换言之,一共有多少个单元格。 - 二维数组的访问和赋值方式和一维数组类似。 ```bash // 二维数组中元素的访问 数据类型 元素名 = 二维数组名[行下标][列下标]; ``` ```bash // 二维数组中元素的赋值 二维数组名[行下标][列下标] = 值; ``` 内存图: ![](/uploads/images/20230724/2a8f02bb393ef0afe1e598787bb824a1.png) 示例: ```bash /** * 二维数组的动态初始化 * * @author maxiaoke.com * @version 1.0 */ public class ArrayTest6 { public static void main(String[] args) { // 定义了一个名称为arr的二维数组 // arr中有3个一维数组,每个一维数组中有2个元素。每个一维数组的名称是:arr[0]、arr[1]、arr[2]、 int[][] arr = new int[3][2]; // 二维数组元素的访问 System.out.println("二维数组的元素的访问 = " + arr[0][0]); System.out.println("二维数组的元素的访问 = " + arr[0][1]); System.out.println("二维数组的元素的访问 = " + arr[1][0]); System.out.println("二维数组的元素的访问 = " + arr[1][1]); System.out.println("二维数组的元素的访问 = " + arr[2][0]); System.out.println("二维数组的元素的访问 = " + arr[2][1]); // 二维数组中的元素赋值 arr[0][0] = 1; arr[0][1] = 2; arr[1][0] = 3; arr[1][1] = 4; arr[2][0] = 5; arr[2][1] = 6; System.out.println("赋值之后的二维数组的元素的访问 = " + arr[0][0]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[0][1]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][0]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][1]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][0]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][1]); } } ``` 9.2.2 动态初始化2 - 语法: ```bash 数据类型[][] 数组名 = new 数据类型[m][]; ``` ```bash 数组名[行下标] = new 数据类型[n]; ``` - 解释: - m 表示这个二维数组有多少个一维数组,每个一维数组的元素的默认初始化值是 null 。 - n 表示给对一维数组进行初始化。 - 内存示意图: ![](/uploads/images/20230724/ab3f6a7a167ea61fc9197e2c1a6fab80.png) 示例: ```bash /** * 二维数组的动态初始化 * * @author maxiaoke.com * @version 1.0 */ public class ArrayTest7 { public static void main(String[] args) { // 动态创建一个二维数组 int[][] arr = new int[3][]; arr[0] = new int[1]; arr[1] = new int[2]; arr[2] = new int[3]; // 二维数组的元素的访问 System.out.println("二维数组的元素的访问 = " + arr[0][0]); System.out.println("二维数组的元素的访问 = " + arr[1][0]); System.out.println("二维数组的元素的访问 = " + arr[1][1]); System.out.println("二维数组的元素的访问 = " + arr[2][0]); System.out.println("二维数组的元素的访问 = " + arr[2][1]); System.out.println("二维数组的元素的访问 = " + arr[2][2]); // 二维数组中元素的赋值 arr[0][0] = 1; arr[1][0] = 2; arr[1][1] = 3; arr[2][0] = 4; arr[2][1] = 5; arr[2][2] = 6; System.out.println("赋值之后的二维数组的元素的访问 = " + arr[0][0]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][0]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[1][1]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][0]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][1]); System.out.println("赋值之后的二维数组的元素的访问 = " + arr[2][2]); } } ``` 9.2.3 静态初始化 语法: ```bash 数据类型[][] 数组名 = new int[][]{{元素1,元素2,...},{元素1,元素2,...},{元素1,元素2,...},...} 数据类型[][] 数组名 = {{元素1,元素2,...},{元素1,元素2,...},{元素1,元素2,...},...} 数据类型[][] 数组名 ; 数组名 = new int[][]{{元素1,元素2,...},{元素1,元素2,...},{元素1,元素2,...},...} ``` 示例: ```bash /** * 二维数组的静态初始化 * * @author maxiaoke.com * @version 1.0 */ public class ArrayTest8 { public static void main(String[] args) { // 二维数组的静态初始化 int[][] arr = new int[][]{{1,2}, {2, 3}, {4, 5, 6}}; // 二维数组元素的访问 System.out.println("二维数组的元素的访问 = " + arr[0][0]); System.out.println("二维数组的元素的访问 = " + arr[0][1]); System.out.println("二维数组的元素的访问 = " + arr[1][0]); System.out.println("二维数组的元素的访问 = " + arr[1][1]); System.out.println("二维数组的元素的访问 = " + arr[2][0]); System.out.println("二维数组的元素的访问 = " + arr[2][1]); System.out.println("二维数组的元素的访问 = " + arr[2][2]); } } ``` 9.3 二维数组的名称以及表达方式 二维数组的长度/行数: ```bash 二维数组名.length ``` 二维数组的某一行: ```bash // 行下标的范围是[0,二维数组名.length-1] 二维数组名[行下标] ``` 二维数组的某一行的列数: ```bash // 二维数组的每一行是一个一维数组 二维数组名[行下标].length ``` 二维数组的某一个元素: ```bash 二维数组名[行下标][列下标] ``` 9.4 二维数组的遍历 - 语法: ```bash for(int i=0; i<二维数组名.length; i++){ for(int j=0; j<二维数组名[i].length; j++){ System.out.print(二维数组名[i][j]); } System.out.println(); } ``` 示例: ```bash /** * 二维数组的遍历 * * @author maxiaoke.com * @version 1.0 */ public class ArrayTest9 { public static void main(String[] args) { int[][] arr = new int[][]{{1, 2}, {2, 3}, {4, 5, 6}}; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + "\t"); } System.out.println(); } } } ```
上一篇:
第八章:数组练习题
下一篇:
第十章:Arrays工具的使用
该分类下的相关小册推荐:
Java语言基础11-Java中的泛型
Java必知必会-JDBC
Java语言基础8-Java多线程
Java语言基础5-面向对象初级
Mybatis合辑3-Mybatis动态SQL
Java性能调优实战
Java语言基础13-类的加载和反射
Mybatis合辑5-注解、扩展、SQL构建
深入理解Java虚拟机
Java语言基础15-单元测试和日志技术
深入拆解 Java 虚拟机
Java高并发秒杀入门与实战