arrays.fill()是java中重置数组最常用且高效的方式,它就地修改原数组元素,支持基本类型和引用类型,性能优于手动循环,但需注意null判空、引用共享及多维数组需逐层调用。

Java 中重置数组最常用且高效的方式就是 Arrays.fill(),它能直接覆盖原数组所有元素,无需新建对象或循环赋值,性能好、代码简洁。
Arrays.fill 的核心用法
该方法属于 java.util.Arrays 工具类,适用于所有基本类型数组和引用类型数组。它不改变数组长度或内存地址,只修改元素值,是真正的“就地清空”。
- 对 int[]、double[] 等基本类型数组,填入对应类型的默认值(如 0、0.0、false)
- 对 String[]、Object[] 等引用类型数组,填入
null - 也可指定任意值填充,比如
Arrays.fill(arr, -1)或Arrays.fill(arr, "N/A")
与常见清空方式对比
相比手动 for 循环或重新 new 数组,Arrays.fill() 更优:
- 比 for 循环更简洁,JVM 对其做了底层优化(尤其在 HotSpot 中可能内联为高效内存写操作)
- 比
arr = new int[arr.length]更省内存——避免创建新数组对象,减少 GC 压力 - 对多维数组,需逐层调用(如
Arrays.fill(matrix[i], 0)),不能一键全清,这点要注意
实际使用注意事项
虽简单,但几个细节影响正确性:
- 传入 null 数组会抛
NullPointerException,使用前建议判空 - 对 boolean[] 填充
false是逻辑清空;若业务需要“未初始化”语义,注意 false 本身已是默认值 - 引用类型数组清空后所有元素为
null,后续访问前应判空,避免NullPointerException - 并发场景下,Arrays.fill 非线程安全,若数组被多线程共享,需额外同步
一个实用小技巧:封装通用清空方法
为提升可读性和复用性,可封装工具方法:
public static void clear(int[] arr) { if (arr != null) Arrays.fill(arr, 0); }public static void clear(String[] arr) { if (arr != null) Arrays.fill(arr, null); }
这样调用时语义明确:clear(myArray) 比 Arrays.fill(myArray, 0) 更易懂,也便于统一加空指针防护。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











