Java 二维数组怎么用
很多刚学Java的朋友,第一次碰到“二维数组”时,总觉得它像个复杂的表格,不知道怎么下手。其实它没那么难——咱们可以把它理解成“装着一维数组的大盒子”,而一维数组,就是咱们平时常用的那种“一排变量”。
先搞懂:二维数组到底是什么?
举个生活化的例子:你家小区的快递柜,是一排排一列列的格子,比如有3排、每排4个格子,总共12个。这个“3排×4列”的结构,就和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二维数组的用法,核心就是“行+列”的对应关系,就像日常用的表格、快递柜、课程表,都是同一个逻辑——只要把抽象的代码和生活里的场景对应起来,就不会觉得难。