前言对于Java零基础的同学来说数组从一维升级到二维/多维时很容易被“多层下标”绕晕。这篇文章用「座位表」「楼层座位」这种生活场景从零拆解二维数组和多维数组的核心逻辑代码极简、注释详细保证新手也能秒懂。一、核心概念人话版数组类型通俗理解核心特征一维数组一排座位[1号,2号,3号]只有一层下标按顺序排列二维数组表格/棋盘3排2列的座位两层下标行列数组里套数组多维数组一栋楼的座位2层、每层2排、每排2座多层下标楼层排座数组套数组再套数组二、二维数组最常用1. 完整代码可直接运行packagecom.lmx.array;// 二维数组核心示例3排2列的座位表publicclassArrayDemo05{publicstaticvoidmain(String[]args){// 1. 定义二维数组3排2列的座位表// 格式数据类型[][] 数组名 {{第一行元素}, {第二行元素}, {第三行元素}};int[][]seats{{1,2},// 第一排1号座2号座{3,4},// 第二排3号座4号座{5,6}// 第三排5号座6号座原代码笔误已修正};// 2. 遍历二维数组打印所有座位号// 外层循环遍历“行”每一排for(inti0;iseats.length;i){System.out.print(第(i1)排);// 内层循环遍历“列”每一排的每个座位for(intj0;jseats[i].length;j){System.out.print(seats[i][j]号座 );}System.out.println();// 打印完一排换行}// 3. 单独获取某个元素比如第2排第1个座位System.out.println(\n单独获取第2排第1个座位是 seats[1][0] 号);}}2. 运行结果第1排1号座 2号座 第2排3号座 4号座 第3排5号座 6号座 单独获取第2排第1个座位是 3 号3. 核心拆解傻瓜式解释定义规则int[][] seats表示“整数类型的二维数组”大括号里每一个{}代表一行行内的元素是列值。外层循环i控制“行”seats.length获取总行数这里是3行i1是为了让打印的排数从1开始下标默认从0开始。内层循环j控制“列”seats[i].length获取第i行的列数这里每行都是2列。取值规则seats[1][0]→[1]是第2行下标0开始[0]是第1列 → 对应值3。三、多维数组以三维为例1. 完整代码可直接运行packagecom.lmx.array;// 三维数组核心示例2层楼的座位表publicclassArrayDemo05{publicstaticvoidmain(String[]args){// 1. 定义三维数组2层楼每层2排每排2个座位// 格式数据类型[][][] 数组名 {{{第一层第一排}, {第一层第二排}}, {{第二层第一排}, {第二层第二排}}};int[][][]building{{{101,102},{103,104}},// 1楼第一排(101/102) 第二排(103/104){{201,202},{203,204}}// 2楼第一排(201,202) 第二排(203,204)};// 2. 遍历三维数组// 外层遍历楼层for(intfloor0;floorbuilding.length;floor){System.out.println(\n第(floor1)楼);// 中层遍历每楼的排数for(introw0;rowbuilding[floor].length;row){System.out.print(第(row1)排);// 内层遍历每排的座位for(intseat0;seatbuilding[floor][row].length;seat){System.out.print(building[floor][row][seat]号座 );}System.out.println();}}// 3. 单独获取某个元素2楼1排第2个座位System.out.println(\n单独获取2楼第1排第2个座位是 building[1][0][1] 号);}}2. 运行结果第1楼 第1排101号座 102号座 第2排103号座 104号座 第2楼 第1排201号座 202号座 第2排203号座 204号座 单独获取2楼第1排第2个座位是 202 号3. 核心拆解傻瓜式解释定义规则int[][][] building表示“整数类型的三维数组”大括号嵌套层级对应「楼层→排→座位」。三层循环外层floor控制楼层building.length获取总楼层数2层中层row控制每楼的排数building[floor].length获取当前楼层的排数2排内层seat控制每排的座位building[floor][row].length获取当前排的座位数2个。取值规则building[1][0][1]→[1]2楼、[0]1排、[1]2号座 → 对应值202。四、完整整合版代码二维三维packagecom.lmx.array;// 二维数组 三维数组 完整示例publicclassArrayDemo05{publicstaticvoidmain(String[]args){// 二维数组 int[][]seats{{1,2},// 第一排1号座2号座{3,4},// 第二排3号座4号座{5,6}// 第三排5号座6号座};// 遍历二维数组System.out.println( 二维数组3排2列座位表);for(inti0;iseats.length;i){System.out.print(第(i1)排);for(intj0;jseats[i].length;j){System.out.print(seats[i][j]号座 );}System.out.println();}System.out.println(单独获取第2排第1个座位 seats[1][0]\n);// 三维数组 int[][][]building{{{101,102},{103,104}},// 1楼第一排、第二排{{201,202},{203,204}}// 2楼第一排、第二排};// 遍历三维数组System.out.println( 三维数组2层楼座位表);for(intfloor0;floorbuilding.length;floor){System.out.println(\n第(floor1)楼);for(introw0;rowbuilding[floor].length;row){System.out.print(第(row1)排);for(intseat0;seatbuilding[floor][row].length;seat){System.out.print(building[floor][row][seat]号座 );}System.out.println();}}System.out.println(\n单独获取2楼第1排第2个座位 building[1][0][1]);}}五、核心总结一看就懂维度 循环层数二维数组用2层循环三维数组用3层循环下标永远从0开始取值规则数组名[外层下标][中层下标][内层下标]下标对应“大分类→小分类→具体值”比如楼层→排→座位长度获取二维数组名.length总行数、数组名[i].length第i行的列数三维数组名.length总楼层、数组名[floor].length当前楼层的排数、数组名[floor][row].length当前排的座位数。六、新手避坑点别混淆“下标”和“实际序号”代码里i1对应“第2排”打印时要i1修正多维数组的大括号要成对嵌套层级对应维度比如三维数组是三层{}嵌套每行的列数可以不一致比如二维数组可以{{1,2},{3}}但新手先学固定行列的场景。结尾二维/多维数组的核心就是“数组套数组”只要把维度对应到生活中的“分类层级”比如排→列、楼层→排→座再配合循环逐层遍历就能轻松掌握。建议新手先敲熟二维数组再扩展到三维多运行代码看结果比死记概念更有效。
【零基础吃透Java】二维数组多维数组(傻瓜式教程,一看就懂)
前言对于Java零基础的同学来说数组从一维升级到二维/多维时很容易被“多层下标”绕晕。这篇文章用「座位表」「楼层座位」这种生活场景从零拆解二维数组和多维数组的核心逻辑代码极简、注释详细保证新手也能秒懂。一、核心概念人话版数组类型通俗理解核心特征一维数组一排座位[1号,2号,3号]只有一层下标按顺序排列二维数组表格/棋盘3排2列的座位两层下标行列数组里套数组多维数组一栋楼的座位2层、每层2排、每排2座多层下标楼层排座数组套数组再套数组二、二维数组最常用1. 完整代码可直接运行packagecom.lmx.array;// 二维数组核心示例3排2列的座位表publicclassArrayDemo05{publicstaticvoidmain(String[]args){// 1. 定义二维数组3排2列的座位表// 格式数据类型[][] 数组名 {{第一行元素}, {第二行元素}, {第三行元素}};int[][]seats{{1,2},// 第一排1号座2号座{3,4},// 第二排3号座4号座{5,6}// 第三排5号座6号座原代码笔误已修正};// 2. 遍历二维数组打印所有座位号// 外层循环遍历“行”每一排for(inti0;iseats.length;i){System.out.print(第(i1)排);// 内层循环遍历“列”每一排的每个座位for(intj0;jseats[i].length;j){System.out.print(seats[i][j]号座 );}System.out.println();// 打印完一排换行}// 3. 单独获取某个元素比如第2排第1个座位System.out.println(\n单独获取第2排第1个座位是 seats[1][0] 号);}}2. 运行结果第1排1号座 2号座 第2排3号座 4号座 第3排5号座 6号座 单独获取第2排第1个座位是 3 号3. 核心拆解傻瓜式解释定义规则int[][] seats表示“整数类型的二维数组”大括号里每一个{}代表一行行内的元素是列值。外层循环i控制“行”seats.length获取总行数这里是3行i1是为了让打印的排数从1开始下标默认从0开始。内层循环j控制“列”seats[i].length获取第i行的列数这里每行都是2列。取值规则seats[1][0]→[1]是第2行下标0开始[0]是第1列 → 对应值3。三、多维数组以三维为例1. 完整代码可直接运行packagecom.lmx.array;// 三维数组核心示例2层楼的座位表publicclassArrayDemo05{publicstaticvoidmain(String[]args){// 1. 定义三维数组2层楼每层2排每排2个座位// 格式数据类型[][][] 数组名 {{{第一层第一排}, {第一层第二排}}, {{第二层第一排}, {第二层第二排}}};int[][][]building{{{101,102},{103,104}},// 1楼第一排(101/102) 第二排(103/104){{201,202},{203,204}}// 2楼第一排(201,202) 第二排(203,204)};// 2. 遍历三维数组// 外层遍历楼层for(intfloor0;floorbuilding.length;floor){System.out.println(\n第(floor1)楼);// 中层遍历每楼的排数for(introw0;rowbuilding[floor].length;row){System.out.print(第(row1)排);// 内层遍历每排的座位for(intseat0;seatbuilding[floor][row].length;seat){System.out.print(building[floor][row][seat]号座 );}System.out.println();}}// 3. 单独获取某个元素2楼1排第2个座位System.out.println(\n单独获取2楼第1排第2个座位是 building[1][0][1] 号);}}2. 运行结果第1楼 第1排101号座 102号座 第2排103号座 104号座 第2楼 第1排201号座 202号座 第2排203号座 204号座 单独获取2楼第1排第2个座位是 202 号3. 核心拆解傻瓜式解释定义规则int[][][] building表示“整数类型的三维数组”大括号嵌套层级对应「楼层→排→座位」。三层循环外层floor控制楼层building.length获取总楼层数2层中层row控制每楼的排数building[floor].length获取当前楼层的排数2排内层seat控制每排的座位building[floor][row].length获取当前排的座位数2个。取值规则building[1][0][1]→[1]2楼、[0]1排、[1]2号座 → 对应值202。四、完整整合版代码二维三维packagecom.lmx.array;// 二维数组 三维数组 完整示例publicclassArrayDemo05{publicstaticvoidmain(String[]args){// 二维数组 int[][]seats{{1,2},// 第一排1号座2号座{3,4},// 第二排3号座4号座{5,6}// 第三排5号座6号座};// 遍历二维数组System.out.println( 二维数组3排2列座位表);for(inti0;iseats.length;i){System.out.print(第(i1)排);for(intj0;jseats[i].length;j){System.out.print(seats[i][j]号座 );}System.out.println();}System.out.println(单独获取第2排第1个座位 seats[1][0]\n);// 三维数组 int[][][]building{{{101,102},{103,104}},// 1楼第一排、第二排{{201,202},{203,204}}// 2楼第一排、第二排};// 遍历三维数组System.out.println( 三维数组2层楼座位表);for(intfloor0;floorbuilding.length;floor){System.out.println(\n第(floor1)楼);for(introw0;rowbuilding[floor].length;row){System.out.print(第(row1)排);for(intseat0;seatbuilding[floor][row].length;seat){System.out.print(building[floor][row][seat]号座 );}System.out.println();}}System.out.println(\n单独获取2楼第1排第2个座位 building[1][0][1]);}}五、核心总结一看就懂维度 循环层数二维数组用2层循环三维数组用3层循环下标永远从0开始取值规则数组名[外层下标][中层下标][内层下标]下标对应“大分类→小分类→具体值”比如楼层→排→座位长度获取二维数组名.length总行数、数组名[i].length第i行的列数三维数组名.length总楼层、数组名[floor].length当前楼层的排数、数组名[floor][row].length当前排的座位数。六、新手避坑点别混淆“下标”和“实际序号”代码里i1对应“第2排”打印时要i1修正多维数组的大括号要成对嵌套层级对应维度比如三维数组是三层{}嵌套每行的列数可以不一致比如二维数组可以{{1,2},{3}}但新手先学固定行列的场景。结尾二维/多维数组的核心就是“数组套数组”只要把维度对应到生活中的“分类层级”比如排→列、楼层→排→座再配合循环逐层遍历就能轻松掌握。建议新手先敲熟二维数组再扩展到三维多运行代码看结果比死记概念更有效。