Java 数组克隆

2025年3月17日 | 阅读 7 分钟

很多时候,我们需要克隆一个数组来备份原始元素。我们有一些特殊的字符串和数字,比如回文数、回文字符串和阿姆斯特朗数,为了检查它们的特殊性,我们需要克隆数组。例如,要检查一个字符串是否是回文,我们首先将字符串转换为字符数组,并将 char 数组克隆为 temp。现在,我们反转 char 数组中的元素,并将其与包含原始字符串的 temp 进行比较。

简单来说,当我们想备份原始数据时,我们需要克隆数组。在 Java 中,有四种克隆数组的方法,如下所示:

通过复制数组元素

这是克隆数组的朴素方法。在这种方法中,我们迭代原始数组并将数组中的每个元素放入另一个数组中。我们通过以下方式克隆数组:

CloneArrayExample1.java

输出

Java Array Clone

使用 clone() 方法

在上述方法中,我们迭代了原始数组来创建它的克隆。我们有另一种方法,它需要较少的时间来克隆给定的数组,即 Object 类的 **clone()** 方法。clone() 方法的语法如下:

让我们实现使用 Object 的 clone() 方法克隆数组的代码:

CloneArrayExample2.java

输出

Java Array Clone

使用 arraycopy() 方法

与 clone() 方法一样,我们还可以使用 **java.lang** 包中提供的 System 类的 arraycopy() 方法。arraycopy() 方法具有以下语法:

其中,**src** 定义源数组,**srcPos** 定义开始复制的位置索引,**dest** 定义将要复制元素的数组,**destPos** 定义在克隆数组中放置复制元素的索引,**length** 是要复制的子数组的大小。

让我们实现使用 System.arraycopy() 方法克隆数组的代码:

CloneArrayExample3.java

输出

Java Array Clone

使用 copyOf() 方法

与 clone() 和 arraycopy() 方法一样,我们还可以使用 **java.util** 包中提供的 Arrays 类的 copyOf() 方法。copyOf() 方法的语法如下:

其中,**arr** 定义原始数组,**len** 是要复制的数组的长度。

让我们实现使用 Arrays 类的 arraycopy() 方法克隆数组的代码:

CloneArrayExample4.java

输出

Java Array Clone

使用 copyOfRange() 方法

与 copyOf() 方法一样,Arrays 类提供 copyOfRange() 方法来克隆数组。copyOfRange() 方法用于将指定范围的原始数组元素复制到克隆数组中。copyOfRange() 方法的语法如下:

其中,**the original** 定义原始数组,**from** 定义起始索引,**to** 定义元素的结束索引。

让我们实现使用 Arrays 类的 arraycopyRange() 方法克隆数组的代码:

CloneArrayExample5.java

输出

Java Array Clone

以上讨论的所有方法都用于克隆数组。我们建议您使用 Object 类的 clone() 方法来克隆数组。