怎么通过 Arrays.fill() 快速为一个新分配的初始化数组填充指定的默认占位符
Arrays.fill() 用于为已创建数组批量赋值,需先 new 创建再调用;支持全数组或指定区间填充,适用于设置业务占位符而非依赖默认初始化。 在 Ja va 里,Arrays.fill() 绝对算得上是给数组快速“涂色”的神器。你只要先 new 出一个数组,然后调一下 fill(),就能把统一
Arrays.fill() 用于为已创建数组批量赋值,需先 new 创建再调用;支持全数组或指定区间填充,适用于设置业务占位符而非依赖默认初始化。

在 Ja va 里,Arrays.fill() 绝对算得上是给数组快速“涂色”的神器。你只要先 new 出一个数组,然后调一下 fill(),就能把统一的默认值填满每个格子。不过有个小细节得先搞清楚:它不能让你在 new 的同时一步到位地初始化——必须先创建数组对象,再调用 fill()。但别嫌麻烦,这两步加起来其实就是一行代码的事,开发中经常这么用。
基本用法:先创建,再填充
标准的操作流程是这样的:先用 new 指定数组长度,然后用 Arrays.fill() 填入统一的业务占位符。看几个例子就明白了:
int[] arr = new int[5]; Arrays.fill(arr, -1);→ 结果[-1, -1, -1, -1, -1]String[] strs = new String[3]; Arrays.fill(strs, "N/A");→["N/A", "N/A", "N/A"]boolean[] flags = new boolean[4]; Arrays.fill(flags, true);→[true, true, true, true]
是不是非常直观?无论是整数、字符串还是布尔值,都能一键填满。
注意类型默认值与显式占位符的区别
你可能会想:如果不调 fill(),数组本身不是有默认初始化吗?没错,int 默认 0,String 默认 null,boolean 默认 false。但实际项目中,我们需要的往往是具有业务语义的占位符,比如用 -1 表示“还未设置索引”,用 "--" 表示“文本占位”,用 Double.NaN 表示“浮点数缺失”。这些默认值可不会自己变成 -1 或 NaN,必须显式地 fill() 一下。一句话:默认初始化是 Ja va 给出的“空白答卷”,而 fill() 是你在答卷上写上“占位符”的动作。
支持重载:可填子区间,灵活控制范围
有时候我们并不想填满整个数组,只想修改某一段连续区域。别担心,Arrays.fill() 提供了带起止索引的重载版本:
int[] a = new int[10]; Arrays.fill(a, 2, 7, 999);→ 把索引 2 到 6(含)的元素设为 999,其余位置保持默认的 0- 这等价于手动写一个
for (int i = 2; i < 7; i++) a[i] = 999;,但 fill() 写法更安全、语义更清晰,尤其在维护代码时一眼就能看懂意图。
小提醒:原始类型 vs 引用类型
fill() 对原始类型和引用类型都适用,但效果有本质区别。原始类型(比如 int、char)每个元素独立存储该值,改一个不影响其他。对于引用类型(比如 String、自定义对象),fill() 会让所有元素引用同一个对象实例。这意味着,如果你填的是一个可变对象(比如 new ArrayList()),后续修改其中一个元素的内容,其他元素也会跟着变——因为大家共用同一个对象。为了避免这种“牵一发而动全身”的意外,建议填入不可变对象(比如 "N/A" 这样的字符串常量),或者干脆用循环逐个创建新实例。总之,用引用类型填数组时多留个心眼。


































