arrays.fill 是 java 中用于一维数组批量赋值的轻量工具,支持基本类型和引用类型,但不支持多维数组整体填充;提供全数组、区间填充及 object 类型重载,需注意引用类型共享对象和边界校验。

Arrays.fill 是 Java 中最直接、最轻量的数组批量赋值工具,适合初始化或重置一维基本类型和引用类型数组,无需循环,代码简洁且性能接近手写 for 循环。
适用场景与限制
该方法仅支持一维数组,不支持多维数组(如 int[][])整体填充;对基本类型(int、double 等)和对象类型(String[]、Object[])均有效,但填入的值必须与数组元素类型兼容。例如:Arrays.fill(new String[5], "N/A") 合法,而 Arrays.fill(new int[5], "abc") 编译失败。
常用重载形式
核心有三类重载:
-
Arrays.fill(type[] a, type val):填充整个数组 -
Arrays.fill(type[] a, int fromIndex, int toIndex, type val):填充指定区间(左闭右开,toIndex不包含) - 针对
Object[]还有Arrays.fill(Object[] a, Object val),支持 null 值填充
注意:fromIndex 必须 ≥ 0,toIndex ≤ 数组长度,否则抛 IllegalArgumentException。
对比手动循环与注意事项
性能上,Arrays.fill 底层由 JVM 内联优化,实测与普通 for 循环差异可忽略;但语义更清晰,减少出错可能。需警惕两点:
- 对引用类型数组(如
new StringBuilder[3]),fill只是让每个位置指向同一个对象实例,后续修改会影响所有元素——这不是深拷贝 - 多维数组需逐行调用,例如:
for (int[] row : matrix) Arrays.fill(row, -1);
实用小技巧
结合其他工具提升效率:
- 配合
new与fill一行初始化:int[] flags = new int[100]; Arrays.fill(flags, -1); - 初始化后立即验证:可用
Arrays.stream(arr).allMatch(x -> x == target)快速断言 - 避免重复创建:若需多次重置,复用同一数组并调用
fill比新建更省内存
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











