多维数组

多维数组

一、二维数组

1. 什么是二维数组

二维数组就是数组的数组

1
2
3
4
5
6
7
8
9
10
11
// 二维数组
public class Main {
public static void main(String[] args) {
int[][] ns = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
System.out.println(ns.length); // 3
}
}
  • ns.length 表示二维数组中一共有多少个一维数组
  • 每个元素本身仍然是一个数组

2. 二维数组的内存结构(逻辑)

  • ns → 指向多个一维数组
  • 每个一维数组再存放具体的数据
1
2
3
4
ns ──▶ [ array0 | array1 | array2 ]
│ │ │
▼ ▼ ▼
[1,2,3,4] [5,6,7,8] [9,10,11,12]

3. 获取二维数组中的一维数组

1
2
int[] arr0 = ns[0];
System.out.println(arr0.length); // 4
  • ns[0] 就是 {1, 2, 3, 4}
  • arr0 指向该一维数组

4. 访问二维数组的元素

访问方式:

1
array[row][col]

示例:

1
System.out.println(ns[1][2]); // 7

5. 不规则二维数组

二维数组中,每个一维数组的长度不要求相同

1
2
3
4
5
int[][] ns = {
{ 1, 2, 3, 4 },
{ 5, 6 },
{ 7, 8, 9 }
};

6. 遍历二维数组

方式一:嵌套 for-each

1
2
3
4
5
6
for (int[] arr : ns) {
for (int n : arr) {
System.out.print(n + ", ");
}
System.out.println();
}

方式二:使用 Arrays.deepToString()

1
2
3
import java.util.Arrays;

System.out.println(Arrays.deepToString(ns));

二、三维数组

1. 定义三维数组

三维数组就是二维数组的数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int[][][] ns = {
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
},
{
{10, 11},
{12, 13}
},
{
{14, 15, 16},
{17, 18}
}
};

2. 访问三维数组元素

1
ns[2][0][1]; // 15

访问规则:

1
ns[层][行][列]

3. 多维数组的实际使用

  • 理论上可以定义 N 维数组
  • 实际开发中:
    • 二维数组最常见
    • 三维及以上使用较少

三、练习:计算学生平均分

题目

使用二维数组表示学生成绩,计算所有学生的平均分。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Main {
public static void main(String[] args) {
int[][] scores = {
{ 82, 90, 91 },
{ 68, 72, 64 },
{ 95, 91, 89 },
{ 67, 52, 60 },
{ 79, 81, 85 },
};

double average = 0;
System.out.println(average);

if (Math.abs(average - 77.733333) < 0.000001) {
System.out.println("测试成功");
} else {
System.out.println("测试失败");
}
}
}

四、小结

  • 二维数组是 数组的数组

  • 三维数组是 二维数组的数组

  • 多维数组中:

    • 每一维的长度可以不同
  • 访问二维数组元素:

    1
    array[row][col]
  • 打印多维数组推荐使用:

    1
    Arrays.deepToString()
  • 实际开发中,最常用的是 二维数组


多维数组
https://cryocore1225.github.io/java/shu-zu-cao-zuo/b8ffc617.html
作者
Cryocore1225
更新于
2026年1月11日
许可协议