1. 二维数组
1.1 概述
- 1.1.1 定义:二维数组是数组的数组,每个元素本身也是一个数组,可以理解为一张表格
- 1.1.2 每行长度可以不同:各子数组长度不要求一致,如
{1,2,3}、{4,5,6}、{7,8,9,10}
1.2 声明与赋值
- 1.2.1 声明格式:
数据类型[][] 数组名
- 1.2.2 静态初始化:
int[][] arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9, 10}
};
数据类型[][] 数组名 = new 数据类型[二维数组长度][每行数组长度];
- 1.2.4 动态初始化(不固定每行长度):先确定行数,再逐行赋值
int[][] ints = new int[3][];
for (int i = 0; i < ints.length; i++) {
ints[i] = new int[]{6, 6, 6};
}
1.3 访问元素
ints[1][1] = 8; // 修改第2行第2列的元素
1.4 打印二维数组
- 1.4.1 直接用 Arrays.toString():只能打印外层结构,输出的是每个子数组的地址值,无实际意义
- 1.4.2 嵌套 for 循环遍历:外层遍历行,内层遍历每行的列,用
print 控制同行输出,println 换行
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
- 1.4.3 逐行用 Arrays.toString():每次打印一整行
for (int i = 0; i < ints.length; i++) {
System.out.println(Arrays.toString(ints[i]));
}
2. 示例代码
package com.itszt.day03;
import java.util.Arrays;
public class Demo07 {
public static void main(String[] args) {
// 静态初始化,每行长度可不同
int[][] arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9, 10}};
// 嵌套 for 循环遍历
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
// 动态初始化,逐行赋值
int[][] ints = new int[3][];
for (int i = 0; i < ints.length; i++) {
ints[i] = new int[]{6, 6, 6};
}
for (int i = 0; i < ints.length; i++) {
System.out.println(Arrays.toString(ints[i]));
}
// 修改指定元素
ints[1][1] = 8;
for (int i = 0; i < ints.length; i++) {
System.out.println(Arrays.toString(ints[i]));
}
}
}
3. 总结
| 知识点 | 核心要点 |
|---|
| 声明格式 | 数据类型[][] 数组名 |
| 静态初始化 | {{1,2},{3,4}} 每行长度可不同 |
| 动态初始化 | new 类型[行数][] 再逐行赋值 |
| 访问元素 | 数组名[行索引][列索引] |
| 遍历方式 | 嵌套 for 循环,外层行内层列 |
| 逐行打印 | Arrays.toString(arr[i]) |