一、本质Java 没有真正的多维数组多维数组 数组里存数组属于数组的数组每一层都是独立引用。二、二维数组最常用1. 静态初始化// 写法1int[][]arr1{{1,2},{3,4,5},{6}};// 写法2intarr2[][]{{10,20},{30}};特点每行长度可以不一样不规则二维数组。2. 动态初始化规则行列固定// 3行2列int[][]arrnewint[3][2];arr[0][0]1;只指定行数列后期分配不规则int[][]arrnewint[3][];arr[0]newint[2];arr[1]newint[4];arr[2]newint[1];三、三维数组// 2层3行4列int[][][]arrnewint[2][3][4];int[][][]a{{{1},{2}},{{3,4}}};四、遍历多维数组1. 普通for循环二维int[][]arr{{1,2},{3,4,5}};for(inti0;iarr.length;i){for(intj0;jarr[i].length;j){System.out.print(arr[i][j] );}System.out.println();}2. 增强for循环for(int[]row:arr){for(intnum:row){System.out.print(num );}}五、长度获取int[][]arr{{1,2},{3,4,5},{6}};arr.length;// 外层长度行数 3arr[0].length;// 第0行的列数 2arr[1].length;// 第1行的列数 3六、复制多维数组注意点clone()/System.arraycopy()/Arrays.copyOf只浅拷贝外层内层数组共享地址int[][]a{{1,2},{3,4}};int[][]ba.clone();b[0][0]99;// a[0][0] 同步修改想要完整深拷贝必须双层循环逐行复制。七、和C多维数组核心区别Java 是数组套数组每行长度可不同C静态多维数组内存连续行列固定。Java 多维数组存堆变量是引用C栈数组直接分配连续内存。Java 浅拷贝只复制外层引用C静态二维数组 memcpy 可整块深复制。八、常用场景矩阵运算、表格数据、棋盘、图像像素存储等。
Java 多维数组详解
发布时间:2026/7/8 11:56:25
一、本质Java 没有真正的多维数组多维数组 数组里存数组属于数组的数组每一层都是独立引用。二、二维数组最常用1. 静态初始化// 写法1int[][]arr1{{1,2},{3,4,5},{6}};// 写法2intarr2[][]{{10,20},{30}};特点每行长度可以不一样不规则二维数组。2. 动态初始化规则行列固定// 3行2列int[][]arrnewint[3][2];arr[0][0]1;只指定行数列后期分配不规则int[][]arrnewint[3][];arr[0]newint[2];arr[1]newint[4];arr[2]newint[1];三、三维数组// 2层3行4列int[][][]arrnewint[2][3][4];int[][][]a{{{1},{2}},{{3,4}}};四、遍历多维数组1. 普通for循环二维int[][]arr{{1,2},{3,4,5}};for(inti0;iarr.length;i){for(intj0;jarr[i].length;j){System.out.print(arr[i][j] );}System.out.println();}2. 增强for循环for(int[]row:arr){for(intnum:row){System.out.print(num );}}五、长度获取int[][]arr{{1,2},{3,4,5},{6}};arr.length;// 外层长度行数 3arr[0].length;// 第0行的列数 2arr[1].length;// 第1行的列数 3六、复制多维数组注意点clone()/System.arraycopy()/Arrays.copyOf只浅拷贝外层内层数组共享地址int[][]a{{1,2},{3,4}};int[][]ba.clone();b[0][0]99;// a[0][0] 同步修改想要完整深拷贝必须双层循环逐行复制。七、和C多维数组核心区别Java 是数组套数组每行长度可不同C静态多维数组内存连续行列固定。Java 多维数组存堆变量是引用C栈数组直接分配连续内存。Java 浅拷贝只复制外层引用C静态二维数组 memcpy 可整块深复制。八、常用场景矩阵运算、表格数据、棋盘、图像像素存储等。