arrays.copyof 是 java 中最实用的数组容量管理工具,它将创建新数组、复制内容、填充默认值三步压缩为一行代码,支持扩容(多出位置填默认值)、缩容或截断,本质是按需重建数组容器。

Arrays.copyOf 是 Java 中最实用的数组容量管理工具,它把“创建新数组 + 复制内容 + 填充默认值”三步操作压缩成一行代码,适合封装成可复用的扩容、缩容或截断接口。
Arrays.copyOf 的核心能力
它不只是复制,本质是按需重建数组容器:
- 长度不变 → 等效深拷贝(对基本类型)或浅拷贝(对引用类型)
- newLength > 原长度 → 自动扩容,多出位置填默认值(int 为 0,String 为 null,boolean 为 false)
- newLength
- 支持泛型推导,返回类型与原数组一致,无需强制转型
封装一个通用扩容方法
模拟 ArrayList.ensureCapacity 的逻辑,可写成简洁的工具方法:
// 支持任意引用类型数组的动态扩容
public static <t> T[] ensureCapacity(T[] arr, int minCapacity) {
if (arr == null) return (T[]) new Object[minCapacity];
if (minCapacity
<p>调用示例:</p>
<ul>
<li><code>String[] names = {"Alice", "Bob"};</code></li>
<li><code>names = ensureCapacity(names, 5); // → ["Alice", "Bob", null, null, null]</code></li>
</ul>
<h3>结合 copyOfRange 实现灵活切片</h3>
<p>当需要从原数组中提取一段并独立成新容器时,搭配使用更清晰:</p>
<ul>
<li><code>int[] data = {10, 20, 30, 40, 50};</code></li>
<li><code>int[] slice = Arrays.copyOfRange(data, 1, 4); // → [20, 30, 40],左闭右开</code></li>
<li>若需扩容后再切片,可链式调用:<code>Arrays.copyOfRange(Arrays.copyOf(src, 10), 2, 7)</code>
</li>
</ul>
<h3>注意浅拷贝带来的对象共享风险</h3>
<p>对对象数组(如 Person[]),copyOf 只复制引用,不复制对象本身:</p>
<ul>
<li>修改新数组中某个元素的属性,原数组对应位置的对象也会被改</li>
<li>如需真正隔离,必须手动深拷贝每个对象,或使用序列化、第三方库(如 Apache Commons Lang 的 SerializationUtils.clone)</li>
<li>基本类型数组(int[]、double[]等)无此问题,值已完全分离</li>
</ul></t>大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











