Arrays.fill()是Java中初始化数组默认值最简洁高效的方式,一行代码即可批量赋值,支持全数组或区间填充,覆盖所有基本类型和引用类型,且为JVM优化的本地实现。

Java中初始化数组默认值,Arrays.fill() 是最简洁高效的方式,无需循环、不依赖额外工具类,一行代码就能批量赋值。
Arrays.fill() 的核心用法
该方法属于 java.util.Arrays 类,提供多种重载形式,覆盖基本类型和引用类型数组:
-
全部填充:对整个数组设统一值,如
Arrays.fill(arr, 0)或Arrays.fill(arr, "N/A") -
区间填充:指定起始(含)与结束(不含)索引,如
Arrays.fill(arr, 2, 5, -1)只填索引 2、3、4 位置 - 支持
byte、short、int、long、float、double、char、boolean和Object类型数组
常见场景与注意事项
实际开发中需注意边界与类型匹配问题:
- 对
boolean[]填充时,只能用true或false,不能传数字或字符串 - 填充对象数组(如
String[])时,填的是引用,多个位置可能指向同一个对象实例;若需独立对象,仍需循环创建 - 索引范围越界会抛
ArrayIndexOutOfBoundsException,建议先校验fromIndex - 原始类型数组默认初始化为 0 / false / '\u0000',但显式调用
fill()更清晰,尤其在复用数组时
对比手动初始化与Stream方式
虽然可用 for 循环或 IntStream.generate().limit().toArray() 实现,但各有短板:
- for 循环冗长,易出错(如漏写
i++或越界) - Stream 方式适合生成动态值(如随机数、递增序列),但对固定值填充性能略低,且语法复杂
-
Arrays.fill()是 JVM 内部优化的本地实现,底层可能使用内存块拷贝,效率高、语义明确
实用小技巧
提升编码效率的小细节:
- 配合数组声明一起用:
int[] data = new int[10]; Arrays.fill(data, -1); - 二维数组需逐行填充:
for (int[] row : matrix) Arrays.fill(row, 0); - 测试中快速构造预期数据:
String[] expected = new String[3]; Arrays.fill(expected, "OK"); - 清空数值数组可填 0,布尔数组填
false,引用类型填null(注意 NPE 风险)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











