java中多维数组本质是“数组的数组”,最常用二维数组,声明支持int[][] matrix等三种写法(推荐类型前置),初始化分静态(如{{1,2},{4,5}})和动态(如new int[3][]后逐行赋值),需注意不规则数组、null引用和混合初始化错误。

Java 中多维数组本质是“数组的数组”,最常用的是二维数组,声明和初始化方式灵活,但需注意语法细节和内存结构。
声明二维数组的三种常见写法
Java 允许将方括号放在类型后或变量名后,语义相同,但风格需统一:
-
推荐写法(强调类型):
int[][] matrix; - 等价写法(不推荐混用):
int[] matrix[];或int matrix[][];
⚠️ 注意:不能写成 int[] [] matrix(空格分隔方括号),编译报错。
初始化方式:静态 vs 动态
静态初始化(声明同时赋值,长度和元素都确定):
int[][] arr = {
{1, 2, 3},
{4, 5},
{6, 7, 8, 9}
};
→ 每个子数组可长度不同(“不规则数组”),JVM 自动推断外层数组长度为 3。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
动态初始化(先分配外层数组,再逐个分配内层数组):
int[][] grid = new int[3][]; // 外层3个null引用
grid[0] = new int[]{1, 2}; // 第一行:2个元素
grid[1] = new int[4]; // 第二行:4个0(默认值)
grid[2] = new int[]{7, 8, 9}; // 第三行:3个元素
→ 必须显式为每个 grid[i] 赋值数组对象,否则访问 grid[i][j] 会抛 NullPointerException。
声明、创建、赋值分步操作
适合需要运行时计算维度或分阶段处理的场景:
int rows = 2, cols = 3; int[][] table = new int[rows][cols]; // 创建2×3的矩形数组,所有元素为0 // 逐个赋值 table[0][0] = 10; table[0][1] = 20; table[1][2] = 30;
→ new int[2][3] 创建的是**规则二维数组**(每行长度固定为 3),所有元素自动初始化为对应类型的默认值(int 为 0)。
常见错误与提醒
- 不能直接用
int[][] a = new int[2][3]{{1,2},{3,4}};—— 静态和动态初始化不可混合 - 获取行数用
arr.length,获取第 i 行列数用arr[i].length(需确保arr[i] != null) - 三维及以上数组同理,如
double[][][] cube = new double[2][3][4];
掌握这几种方式,就能根据实际需求选择最清晰、安全的初始化策略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










