arrays.fill()是java中批量替换数组全部或部分元素的简洁高效方式,支持全量填充、区间填充(左闭右开)及多类型重载,底层为native优化,但对象数组填引用、二维数组需逐层调用。

Java 中用 Arrays.fill() 替换数组全部或部分元素,是比循环赋值更简洁、更高效的方式。它底层调用的是本地方法(native),对基本类型数组尤其快,且语义清晰、不易出错。
基础用法:一键填充整个数组
适用于需要将整个数组重置为统一值的场景,比如清空缓存、初始化状态标记等。
- 对 int 数组:用
Arrays.fill(arr, 0)快速归零 - 对 String 数组:用
Arrays.fill(arr, null)或Arrays.fill(arr, "")统一设为空值或空字符串 - 对 boolean 数组:用
Arrays.fill(flags, false)重置为默认状态
区间填充:精准控制替换范围
通过指定起始索引(含)和结束索引(不含),可只修改数组某一段,避免全量操作开销。
- 语法:
Arrays.fill(array, fromIndex, toIndex, value) - 例如:
Arrays.fill(data, 2, 5, -1)将索引 2、3、4 位置设为 -1(不包含索引 5) - 注意:
fromIndex必须 ≤toIndex,否则抛IllegalArgumentException
类型适配与注意事项
Arrays.fill() 是重载方法,支持所有基本类型及 Object 类型,但行为略有差异:
- 对引用类型(如 String[]),填入的是同一对象引用,不是深拷贝——若后续修改该对象内容,所有位置都会反映变化
- 对 char[] 填充字符串会编译报错,需确保类型匹配(如用
'*'而非"*") - 多维数组不能直接 fill 整体;需逐维调用,例如二维数组:先
Arrays.fill(matrix[i], val)再遍历行
对比手动循环:为什么推荐 fill?
虽然 for 循环也能实现,但 Arrays.fill() 更优:
- 代码更简短,意图明确,降低维护成本
- JVM 对其做了高度优化,尤其在 HotSpot 中常被内联为高效汇编指令
- 避免手写循环时常见的边界错误(如
写成 <code>) - 线程安全仅限于单次调用本身;若需并发写入,仍要配合同步机制
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











