Arrays.fill() 用于为已创建数组批量赋值,需先 new 创建再调用;支持全数组或指定区间填充,适用于设置业务占位符而非依赖默认初始化。

Arrays.fill() 是 Java 中为已存在数组批量赋值的便捷工具,但它不能直接用于“新分配并初始化”的数组一步到位——你需要先创建数组,再调用 fill()。不过这个过程非常简洁,实际开发中就是“两步合一秒”。
基本用法:先创建,再填充
必须先用 new 创建数组(指定长度),再用 Arrays.fill() 填入统一值:
-
int[] arr = new int[5]; Arrays.fill(arr, -1); →
[-1, -1, -1, -1, -1] -
String[] strs = new String[3]; Arrays.fill(strs, "N/A"); →
["N/A", "N/A", "N/A"] -
boolean[] flags = new boolean[4]; Arrays.fill(flags, true); →
[true, true, true, true]
注意类型默认值与显式占位符的区别
不调用 fill() 时,数组会按类型自动初始化(如 int 为 0,Object 为 null)。但多数场景需要的是**业务意义的占位符**,比如:
- 用
-1表示“未设置索引” - 用
""或"--"表示空文本占位 - 用
Double.NaN表示浮点数缺失值
这些都必须显式 fill(),不能依赖默认初始化。
支持重载:可填子区间,灵活控制范围
如果只需填充部分元素,可用带起止索引的重载版本:
- int[] a = new int[10]; Arrays.fill(a, 2, 7, 999); → 索引 2~6(含)设为 999,其余保持 0
- 等价于手动循环
for (int i = 2; i ,但更安全、语义更清晰
小提醒:原始类型 vs 引用类型
fill() 对两者都适用,但效果不同:
- 原始类型(
int、char等):每个元素独立存储该值 - 引用类型(
String、自定义对象等):所有元素引用同一个对象实例
→ 若填的是可变对象(如new ArrayList()),后续修改一个会影响全部;建议填不可变对象或用循环新建实例

















