商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 怎么通过 Arrays.fill() 快速为一个新分配的初始化数组填充指定的默认占位符

怎么通过 Arrays.fill() 快速为一个新分配的初始化数组填充指定的默认占位符

  发布于2026-07-09 阅读(0)

扫一扫,手机访问

Arrays.fill() 用于为已创建数组批量赋值,需先 new 创建再调用;支持全数组或指定区间填充,适用于设置业务占位符而非依赖默认初始化。

怎么通过 Arrays.fill() 快速为一个新分配的初始化数组填充指定的默认占位符

在 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 表示“浮点数缺失”。这些默认值可不会自己变成 -1NaN,必须显式地 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() 对原始类型和引用类型都适用,但效果有本质区别。原始类型(比如 intchar)每个元素独立存储该值,改一个不影响其他。对于引用类型(比如 String、自定义对象),fill() 会让所有元素引用同一个对象实例。这意味着,如果你填的是一个可变对象(比如 new ArrayList()),后续修改其中一个元素的内容,其他元素也会跟着变——因为大家共用同一个对象。为了避免这种“牵一发而动全身”的意外,建议填入不可变对象(比如 "N/A" 这样的字符串常量),或者干脆用循环逐个创建新实例。总之,用引用类型填数组时多留个心眼。

本文转载于:https://www.php.cn/faq/2410129.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注