java中不规则二维数组(锯齿数组)指各行长度可不同的二维数组,由一维数组组成,支持声明与初始化分离、直接大括号初始化及动态循环初始化三种方式。

Java 中不规则二维数组(也称“锯齿数组”)是指每一行长度可以不同的二维数组。它不是矩形结构,而是由一维数组组成的数组,各一维数组可独立初始化不同长度。
声明与初始化分开写
先声明数组引用,再逐行为其分配不同长度的一维数组:
- int[][] arr = new int[3][]; —— 声明一个含 3 行的二维数组引用,但每行尚未分配空间
- arr[0] = new int[2]; —— 第 0 行长度为 2
- arr[1] = new int[5]; —— 第 1 行长度为 5
- arr[2] = new int[1]; —— 第 2 行长度为 1
声明时直接初始化(推荐,更简洁)
使用大括号嵌套方式,在创建时就指定每行内容和长度:
- int[][] jagged = { {1, 2}, {3, 4, 5, 6}, {7} };
- 第一行 {1, 2} 长度为 2,第二行 {3, 4, 5, 6} 长度为 4,第三行 {7} 长度为 1
- 编译器自动推断外层数组长度为 3,每行长度依内层花括号决定
动态初始化(结合循环与随机/计算长度)
适合运行时才确定每行长度的场景,例如按索引生成递增长度:
- int[][] dyn = new int[4][];
- for (int i = 0; i dyn[i] = new int[i + 1]; // 第 0 行长 1,第 1 行长 2……
- 之后可单独赋值:dyn[2][1] = 99;(注意下标不越界)
注意事项
访问元素前必须确保该行已初始化,否则会触发 NullPointerException:
- int[][] a = new int[2][]; → 此时 a[0] 和 a[1] 都是 null
- 不能直接写 a[0][0] = 1;,需先执行 a[0] = new int[3];
- 可用 a[i] != null && j 双重校验安全访问
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











