在Java编程中,数组初始化是基础且高频的操作,当需要为数组设置统一的默认值时,手动逐个赋值的方式不仅代码冗余,还容易出现赋值遗漏的问题。Java标准库中的Arrays类提供了fill方法,能够一键完成数组元素的批量赋值,大幅提升初始化效率。

Arrays.fill方法的基本重载形式
Arrays.fill是java.util.Arrays类的静态方法,针对不同类型的数组提供了多种重载实现,核心分为两类:全数组填充和区间填充。
全数组填充重载
这类方法会将指定值赋给数组的所有元素,常见形式如下:
fill(boolean[] a, boolean val):填充布尔类型数组fill(byte[] a, byte val):填充字节类型数组fill(char[] a, char val):填充字符类型数组fill(double[] a, double val):填充双精度浮点类型数组fill(float[] a, float val):填充单精度浮点类型数组fill(int[] a, int val):填充整型数组fill(long[] a, long val):填充长整型数组fill(Object[] a, Object val):填充对象类型数组
区间填充重载
这类方法可以指定填充的起始索引和结束索引,仅对数组的指定区间进行赋值,索引范围是左闭右开,常见形式如下:
fill(boolean[] a, int fromIndex, int toIndex, boolean val)fill(byte[] a, int fromIndex, int toIndex, byte val)fill(char[] a, int fromIndex, int toIndex, char val)fill(double[] a, int fromIndex, int toIndex, double val)fill(float[] a, int fromIndex, int toIndex, float val)fill(int[] a, int fromIndex, int toIndex, int val)fill(long[] a, int fromIndex, int toIndex, long val)fill(Object[] a, int fromIndex, int toIndex, Object val)
基础使用代码示例
一维数组全量填充
当需要为整个一维数组设置默认值时,直接调用全数组填充的fill方法即可:
import java.util.Arrays;
public class ArrayFillDemo {
public static void main(String[] args) {
// 初始化一个长度为5的整型数组
int[] intArray = new int[5];
// 使用Arrays.fill为所有元素赋值默认值10
Arrays.fill(intArray, 10);
// 打印数组内容
System.out.println(Arrays.toString(intArray));
// 初始化一个长度为3的字符串数组
String[] strArray = new String[3];
// 为所有元素赋值默认值"default"
Arrays.fill(strArray, "default");
System.out.println(Arrays.toString(strArray));
}
}
上述代码执行后,intArray的所有元素都是10,strArray的所有元素都是"default",输出结果分别为[10, 10, 10, 10, 10]和[default, default, default]。
一维数组区间填充
如果只需要修改数组的部分元素,可以使用区间填充的重载方法:
import java.util.Arrays;
public class ArrayRangeFillDemo {
public static void main(String[] args) {
int[] numArray = new int[8];
// 先为所有元素赋值初始值0
Arrays.fill(numArray, 0);
// 为索引1到4(不包含4)的元素赋值5
Arrays.fill(numArray, 1, 4, 5);
// 为索引5到7(不包含7)的元素赋值8
Arrays.fill(numArray, 5, 7, 8);
System.out.println(Arrays.toString(numArray));
}
}
执行后数组元素为[0, 5, 5, 5, 0, 8, 8, 0],可以看到只有指定区间的元素被修改,区间外的元素保持原值。
二维数组的填充处理
需要注意的是,Arrays.fill方法无法直接完成二维数组的批量填充,因为二维数组本质是数组的数组,直接填充会导致所有行指向同一个一维数组对象。正确的二维数组填充方式如下:
import java.util.Arrays;
public class TwoDArrayFillDemo {
public static void main(String[] args) {
int row = 3;
int col = 4;
int[][] twoDArray = new int[row][col];
// 遍历二维数组的每一行,分别填充
for (int i = 0; i < row; i++) {
Arrays.fill(twoDArray[i], 9);
}
// 打印二维数组内容
for (int[] rowArr : twoDArray) {
System.out.println(Arrays.toString(rowArr));
}
}
}
上述代码会生成一个3行4列的二维数组,所有元素都是9,输出结果为三行[9, 9, 9, 9]。
使用注意事项
- 区间填充的
fromIndex必须小于toIndex,否则会抛出IllegalArgumentException - 索引范围不能超过数组长度,否则会抛出
ArrayIndexOutOfBoundsException - 对于对象类型数组,
fill方法填充的是同一个对象引用,修改其中一个元素的属性会影响所有元素 Arrays.fill是浅填充,不会创建新的对象实例,对象数组填充时需要特别注意引用问题
常见误区说明
很多开发者会误以为Arrays.fill可以处理多维数组,实际上该方法仅支持一维数组的直接填充。对于多维数组,必须逐层遍历后调用fill方法,否则会出现所有维度引用同一个对象的问题。
另外,fill方法会直接修改原数组,不会返回新的数组对象,使用时不需要接收返回值,直接调用即可完成数组修改。
JavaArrays_fill数组初始化数组填充修改时间:2026-06-25 10:33:24