Java 二维数组怎么用

很多刚学Java的朋友,第一次碰到“二维数组”时,总觉得它像个复杂的表格,不知道怎么下手。其实它没那么难——咱们可以把它理解成“装着一维数组的大盒子”,而一维数组,就是咱们平时常用的那种“一排变量”。

先搞懂:二维数组到底是什么?

举个生活化的例子:你家小区的快递柜,是一排排一列列的格子,比如有3排、每排4个格子,总共12个。这个“3排×4列”的结构,就和Java二维数组的逻辑完全一样。

Java 二维数组怎么用

一维数组像“1排4个的小盒子”,只能存一行数据;而二维数组,就是把多个这样的“小盒子”叠起来,形成“行+列”的组合,能存更有规律的结构化数据——比如一周7天的天气(每天1项数据)是一维,那一个月4周的天气(每周1行数据),用二维数组就刚好。

怎么创建一个二维数组?

创建的方式有两种,对应不同的需求,用哪个看你的数据情况。

第一种是“先确定大小,再填数据”,适合提前知道要存多少内容的情况。比如要存3行2列的班级座位,代码可以这么写:

`java

// 先声明二维数组,3行2列

String[][] seats = new String[3][2];

`

这里的[3]是行数,[2]是列数,就像给快递柜先选好“3排、每排4格”的规格,还没放具体快递。

第二种是“直接给内容”,适合一开始就知道要存什么的情况。比如存一周3天,每天2门课的课表:

`java

// 直接给内容,2行3列的课表

String[][] schedule = {

{"语文", "数学"}, // 第一行:周一的课

{"英语", "物理"} // 第二行:周二的课

};

`

这样就像把快递直接放进对应格子,不用先定规格。

怎么取数据和改数据?

取或改二维数组里的内容,要用到两个索引:行索引和列索引,注意索引是从0开始数的——这是很多新手容易搞混的点。

还是拿上面的课表举例,要取“周一的第二门课(数学)”,就要找第0行、第1列的位置:

`java

// 取周一的第二门课:数学

String mondaySecondClass = schedule[0][1];

System.out.println(mondaySecondClass); // 输出:数学

`

如果想把周二的第一门课“英语”改成“历史”,只要改对应位置就行:

`java

// 修改周二第一门课为历史

schedule[1][0] = "历史";

System.out.println(schedule[1][0]); // 输出:历史

`

要是把索引写错,比如写成schedule[2][0],就会提示“数组越界”——相当于你伸手去拿第3排的快递柜,但小区只做了2排,自然拿不到。

怎么遍历二维数组?

二维数组有行和列,遍历它就得用两层循环:外层循环处理每一行,内层循环处理当前行里的每一列。

比如要把刚才的课表全部打印出来,代码可以这么写:

`java

// 遍历二维课表数组

for (int i = 0; i < schedule.length; i++) { // 外层循环:循环行数

for (int j = 0; j < schedule[i].length; j++) { // 内层循环:循环当前行的列数

System.out.print(schedule[i][j] + " ");

}

System.out.println(); // 每一行结束换个行,看着清楚

}

`

打印出来的结果就是:

`

语文 数学

历史 物理

`

是不是和你自己数行数、列数的逻辑完全一样?

其实Java二维数组的用法,核心就是“行+列”的对应关系,就像日常用的表格、快递柜、课程表,都是同一个逻辑——只要把抽象的代码和生活里的场景对应起来,就不会觉得难。

上一篇 TypeScript 索引签名怎么用