arrays.fill是java中批量赋值数组的便捷工具,支持全数组或指定范围(左闭右开)填充同值,适用于基本类型和对象数组,但对象数组仅赋引用、多维数组需逐层调用,且null数组会抛npe。

Arrays.fill 是 Java 提供的便捷工具方法,用于批量为数组所有元素(或指定范围)赋相同值,省去手动循环,代码更简洁、可读性更高。
基本用法:填充整个数组
适用于一维基本类型数组(如 int[]、double[]、boolean[])和对象数组(如 String[]、Integer[])。
语法:Arrays.fill(array, value)
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
int[] nums = new int[5]; Arrays.fill(nums, 7); // → [7, 7, 7, 7, 7] String[] names = new String[3]; Arrays.fill(names, "unknown"); // → ["unknown", "unknown", "unknown"]
指定范围填充:只改一部分
当只需重置数组某一段时,用带起止索引的重载方法:
语法:Arrays.fill(array, fromIndex, toIndex, value)
注意:toIndex 是**不包含**的右边界(类似 substring),且需满足 0 ≤ fromIndex ≤ toIndex ≤ array.length。
示例:
int[] arr = {1, 2, 3, 4, 5};
Arrays.fill(arr, 1, 4, -1); // 从索引1到3(不含4)设为-1
// 结果:[1, -1, -1, -1, 5]
注意事项与常见误区
- 对引用类型数组(如
Object[]),fill赋的是**同一对象的引用**,不是新实例。若后续修改该对象,所有位置都会受影响。 - 不支持多维数组整体填充。例如
int[][] matrix用Arrays.fill(matrix, 0)会编译失败(类型不匹配)。需逐行调用,或用嵌套循环。 - 数组为
null时调用会抛NullPointerException,使用前建议判空。 - 基本类型数组不能用
null填充;对象数组可用null填充,例如Arrays.fill(strArray, null)。
对比手动循环:为什么推荐 fill?
功能等价,但 Arrays.fill 更安全、语义更清晰:
- 自动检查索引范围,越界直接抛
IllegalArgumentException,避免静默错误。 - 底层可能有 JVM 优化(如内存块拷贝),性能通常不低于手写循环。
- 意图明确:“我要把这一段全设成 X”,比 for 循环更易理解。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










