Java中创建固定长度空数组的本质是用new指定类型和长度,元素自动初始化为默认值(如int为0、boolean为false、引用类型为null),长度不可变;常用语法为int[] arr = new int[5];,不可混用大括号;泛型数组需绕过类型擦除限制。

Java中创建固定长度的空数组,本质是声明一个指定类型和长度的数组,所有元素自动初始化为该类型的默认值(如int为0、boolean为false、引用类型为null),并非“真正为空”(即不包含任何有效数据),而是“已分配空间但未显式赋值”。这种数组长度不可变,符合“固定长度”的要求。
基本语法:直接用new指定类型和长度
这是最常用、最清晰的方式,适用于所有类型:
-
int[] arr = new int[5];→ 创建含5个0的整型数组 -
String[] names = new String[3];→ 创建含3个null的字符串数组 -
boolean[] flags = new boolean[10];→ 创建含10个false的布尔数组
简化写法:声明+初始化一步完成(仅限已知字面量)
如果不需要后续修改长度,且初始内容可预知,可用大括号语法。但注意:这会立即填充指定值,不是“空”,而是“显式初始化”:
-
int[] arr = {};→ 长度为0的空数组(合法,但几乎无实用场景) -
int[] arr = {0, 0, 0, 0, 0};→ 效果等同于new int[5],但不够简洁 - ⚠️ 不支持
int[] arr = new int[5] {};这类混合写法,编译报错
泛型与集合不能直接创建固定长度空数组
Java泛型在运行时被擦除,因此无法直接写new ArrayList(编译错误)。正确做法是:
立即学习“Java免费学习笔记(深入)”;
- 用原始类型数组:
ArrayList[] listArray = new ArrayList[5];(元素为null) - 或转为Object再强转(不推荐,有安全隐患):
ArrayList[] safe = (ArrayList []) new ArrayList[5]; - 更安全的选择是使用
List等集合替代固定数组>
常见误区提醒
避免把“空数组”误解为“null”或“未初始化”:
-
int[] arr = null;→ 是空引用,不是空数组;访问arr.length会抛NullPointerException -
int[] arr = new int[0];→ 是真实存在的数组对象,arr.length == 0,可安全调用方法 - 数组一旦用
new创建,长度就锁定,无法扩容或缩容;需动态大小请用ArrayList
基本上就这些。固定长度空数组的核心就是new Type[size],理解默认初始化规则和引用/基本类型的差异,就能准确使用。










