arrays.fill()是java中用于批量填充数组元素的高效静态方法,支持全数组或指定范围填充,适用于基本类型和引用类型数组,但对引用类型填入的是同一对象引用,且不支持多维数组整体填充。

Arrays.fill() 是 Java 中 java.util.Arrays 类提供的静态方法,专门用于**快速、批量地将指定值赋给数组的某一段或全部元素**,避免手动循环赋值,简洁又高效。
一、基础用法:填充整个数组
适用于一维基本类型数组(如 int[]、double[])或引用类型数组(如 String[]、Object[]):
- 语法:
Arrays.fill(array, value) - 作用:把
array所有位置都设为value
示例:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
Arrays.fill(nums, 7); // nums 变为 [7, 7, 7, 7, 7]
二、指定范围填充:fill(array, fromIndex, toIndex, value)
只填充数组中从 fromIndex(含)到 toIndex(不含)之间的元素,非常灵活:
- 索引必须合法:
0 ≤ fromIndex ≤ toIndex ≤ array.length,否则抛IllegalArgumentException - 常用于“重置某段”、“初始化部分区域”等场景
示例:
String[] names = new String[6];Arrays.fill(names, 1, 4, "N/A"); // 索引 1、2、3 被填为 "N/A"
// names = [null, "N/A", "N/A", "N/A", null, null]
三、注意点与常见误区
- 对引用类型数组(如 Object[]),
fill()填的是**同一个对象引用**,不是新对象副本。修改其中一个元素,可能影响所有被填充位置(如果该对象可变) - 不支持多维数组整体填充(如 int[][])。只能逐行调用,例如:
for (int[] row : matrix) Arrays.fill(row, 0); - 不能用于非数组对象;传入 null 会直接抛
NullPointerException
四、对比手动循环:为什么推荐 fill()?
虽然 for 循环也能实现,但 Arrays.fill() 更安全、语义清晰、且底层做了优化(尤其在 HotSpot JVM 中可能内联为高效指令):
- 代码更短,意图明确:“我要把这段全设成 X”
- 边界检查由 JDK 统一处理,不易出错
- 对于大数组,性能通常持平或略优,且可读性显著提升
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










