Java数组声明核心是“类型+方括号+变量名”,分声明(定义引用,值为null)、创建(new指定长度分配内存)和初始化(大括号赋值,仅限声明时使用)三阶段。

Java中数组声明的核心是“类型 + 方括号 + 变量名”,方括号位置灵活但含义一致,关键在于区分声明、创建和初始化三个阶段。
声明数组变量:只告诉编译器“我要一个什么类型的数组”
声明不分配内存,只是定义一个引用变量。方括号可紧跟类型,也可紧跟变量名,效果完全相同:
- int[] nums; —— 推荐写法,强调“nums 是 int 数组”
- int nums[]; —— C/C++ 风格,合法但不推荐,易与多维数组混淆
注意:此时 nums 的值为 null,还不能直接使用(如访问 nums[0] 会抛 NullPointerException)。
创建数组对象:用 new 分配实际内存空间
必须指定长度,且长度必须是确定的整数值(编译期常量或运行期计算出的正整数):
立即学习“Java免费学习笔记(深入)”;
- nums = new int[5]; —— 创建含 5 个默认值为 0 的 int 元素的数组
-
String[] names = new String[3]; —— 创建含 3 个
null引用的 String 数组
数组长度一旦确定就不可改变;new 后的方括号里不能写变量类型(如 new int[5][3] 是二维数组,不是一维)。
声明+创建+初始化一步到位:简化写法
适用于已知所有元素值的场景,编译器自动推断类型和长度:
-
int[] scores = {85, 92, 78}; —— 等价于
new int[]{85, 92, 78} - String[] days = {"Mon", "Tue", "Wed"}; —— 字符串字面量数组
注意:这种大括号初始化只能在声明时使用,不能用于已声明的变量单独赋值(nums = {1,2,3}; 是语法错误)。
常见误区提醒
- 方括号数量代表维度,
int[][] matrix是二维数组,不是“int 数组的数组”这种口语化理解,而是真正意义上的二维结构 -
int[] a, b;声明了两个 int 数组;而int a[], c;中a是数组,c是普通 int 变量(不推荐这种混写) - 数组是对象,存放在堆中;数组变量是引用,存放在栈中(或作为对象字段存在)










