arrays.fill是java中快速批量赋值数组的工具,支持全数组填充(arrays.fill(array, value))和区间填充(arrays.fill(array, fromindex, toindex, value),左闭右开),适用于基本类型和引用类型数组,但不支持二维数组整体填充、需判空防npe、对象数组填充的是同一引用。

Arrays.fill 是 Java 中快速、简洁地为数组批量赋值的工具方法,无需循环即可一次性设置全部或部分元素为指定值。
基础用法:填充整个数组
最常用的方式是将整个数组所有元素设为同一值。适用于初始化、重置等场景。
- 语法:Arrays.fill(array, value)
- 支持基本类型数组(int[]、double[]、boolean[] 等)和引用类型数组(String[]、Object[] 等)
- 示例:
int[] nums = new int[5];
Arrays.fill(nums, 7); // nums 变为 [7, 7, 7, 7, 7]
指定范围填充:只改一部分
当只需修改数组某一段时,可用带起始和结束索引的重载方法,注意 endIndex 是开区间(不包含)。
- 语法:Arrays.fill(array, fromIndex, toIndex, value)
- 要求:0 ≤ fromIndex ≤ toIndex ≤ array.length,否则抛出
IllegalArgumentException - 示例:
char[] chars = {'a', 'b', 'c', 'd', 'e'};
Arrays.fill(chars, 1, 4, 'x'); // chars 变为 ['a', 'x', 'x', 'x', 'e']
注意事项与常见误区
使用时需留意类型匹配和边界细节,避免运行时异常或逻辑错误。
- 对引用类型数组,fill 的是对象引用,不是深拷贝——多个位置指向同一个对象实例
- 不能用于二维数组整体填充(如 int[][]),只能作用于一维子数组,例如:
int[][] grid = new int[3][3];
for (int[] row : grid) Arrays.fill(row, -1); // 需逐行调用 - 数组为 null 时会直接抛出
NullPointerException,调用前建议判空
对比手动循环:为什么推荐 fill?
语义更清晰、代码更简短、JVM 可能做底层优化(如内存块复制),且不易出错。
- 手动写 for 循环易错:下标越界、漏写 ++、条件写反
- fill 方法内部已做边界检查和高效实现,可靠性更高
- 可读性强:“一眼看懂”意图是“全部设为某值”,而非“猜循环在干什么”
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











