arrays.fill()用于一维数组批量赋值,支持全数组或区间填充,原地修改无返回值,适用于基本类型和引用类型,但引用类型需注意对象共享问题。

Java 中用 Arrays.fill() 批量初始化数组,简单高效,适合设置默认值或统一状态。
Arrays.fill 的基本用法
该方法属于 java.util.Arrays 类,可对一维数组所有元素或指定范围赋相同值。它不创建新数组,只修改原数组内容,避免循环手动赋值。
- 全数组填充:
Arrays.fill(arr, value) - 区间填充:
Arrays.fill(arr, fromIndex, toIndex, value)(注意:toIndex 不包含) - 支持基本类型数组(int[]、boolean[] 等)和引用类型数组(String[]、Object[] 等)
常见初始化场景示例
初始化数值型数组时,常用于清零、设为 -1 表示未访问,或设为特定哨兵值;初始化引用类型数组时,需注意 null 与新对象的区别。
-
整型数组归零:
int[] nums = new int[5]; Arrays.fill(nums, 0); // [0,0,0,0,0] -
布尔数组全设 true:
boolean[] flags = new boolean[3]; Arrays.fill(flags, true); // [true,true,true] -
字符串数组批量赋 null 或新实例:
String[] strs = new String[4]; Arrays.fill(strs, "N/A"); // ["N/A","N/A","N/A","N/A"]
使用注意事项
该方法是原地操作,无返回值;传入非法索引范围会抛 IllegalArgumentException;对引用类型数组,填入的是同一对象引用,若需独立对象,仍需循环创建。
- 避免越界:确保
fromIndex 且均在数组长度范围内 - 引用类型慎用:如
Arrays.fill(objArr, new Object())实际所有元素指向同一个对象 - 不可用于多维数组整体填充,需逐维调用或嵌套循环
对比手动循环的实用性
相比 for 循环,Arrays.fill() 语义清晰、代码简洁、JVM 层面可能有优化(如底层调用 native 方法),尤其在大数组初始化时更可靠。
- 可读性高:“我要把这段数组全设成 0” 直接对应一行代码
- 不易出错:无需维护索引变量,规避
i 写错为 <code> 等边界问题 - 适用于各类初始化需求,包括测试数据构造、缓存重置、状态重载等
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











