如何在Java中复制/克隆数组

您所在的位置:网站首页 java怎么调用数组方法的函数 如何在Java中复制/克隆数组

如何在Java中复制/克隆数组

2023-06-21 05:35| 来源: 网络整理| 查看: 265

在制作原始类型的副本时,任务相当容易,但是当涉及对象或引用时,您需要注意副本是深副本还是浅副本。

浅拷贝将复制元素。当涉及原始数据类型时,这不是问题。但是,当涉及到引用时,浅表副本将仅复制值而不是基础信息。

因此,即使您已经复制了元素,但是在共享存储位置时,一个副本中的更改也会反映在其他副本中。为避免这种情况,您需要进行深拷贝,其中不共享内存位置。

 

复制和克隆Java数组

Java允许您使用java.util或System类提供的直接复制方法来复制数组。它还提供了用于克隆整个阵列的克隆方法。

在本教程中,我们将讨论以下复制和克隆数组的方法。

使用for循环手动复制使用System.arraycopy()使用Arrays.copyOf()使用Arrays.copyOfRange()使用Object.clone()

让我们探索!!

使用For循环手动复制

通常,当我们复制变量(例如a和b)时,我们将执行以下复制操作:

a = b;

如果我们对数组应用相同的方法,它将无法正常工作。

让我们看一个编程示例。

public class Main {      public static void main(String[] args)     {          int intArray[] = {12,15,17};           //print original intArray         System.out.println("Contents of intArray[] before assignment:");         for (int i=0; i2,4,6,8};            System.out.println("Original Array:" + Arrays.toString(even_Array));           // copying array even_Array to copy_Array         int[] copy_Array = Arrays.copyOf(even_Array,5);           System.out.println("Copied Array:" + Arrays.toString(copy_Array));         // assign value to unassigned element of copied array         copy_Array[4] = 10;             System.out.println("Copied and modified Array:" + Arrays.toString(copy_Array));     } }

输出:

使用Arrays.copyOf

在上面的程序中,我们使用copyOf方法复制了长度为4的even_Array。提供的第二个参数是5。因此,新复制的数组中包含5个元素。前四个与原始数组相同,而第五个元素在copyOf填充时为0,因为原始数组的长度小于新数组的长度。

使用Arrays.copyOfRange()

当您要复制部分数组时,特别使用Arrays.copyOfRange()方法。与copyOf()方法一样,此方法在内部也使用System.arraycopy()方法。

Arrays.copyOfRange()方法的原型如下:

public static short[] copyOfRange(short[] original, int from, int to)

哪里,

original:要从中复制范围的数组。from:要复制范围的初始索引(包括)。to:要复制的范围的最终索引(不包括)。

下面显示了copyOfRange方法的示例实现。

import java.util.Arrays; class Main {      public static void main(String args[])     {          int intArray[] = { 10,20,30,40,50 };           // to index is within the range         int[] copyArray = Arrays.copyOfRange(intArray, 2, 6);              System.out.println("Array copy with both index within the range: " + Arrays.toString(copyArray));          //to index is out of range        int[] copy1 = Arrays.copyOfRange(intArray, 4, intArray.length + 3);          System.out.println("Array copy with to index out of range: " + Arrays.toString(copy1));       } }

输出:

使用Arrays.copyOfRange

使用Object.clone()

Java数组在内部实现了Cloneable接口,因此克隆Java数组很容易。您可以克隆一维数组和二维数组。克隆一维数组时,它会复制要复制值的数组元素。

另一方面,当您克隆二维或多维数组时,将进行元素的浅表复制,即仅复制引用。数组的克隆是通过数组提供的'Clone()'方法完成的。

克隆产生的一维数组的深层副本可以表示如下:

使用Object.clone

现在,让我们在Java程序中实现一维数组克隆。

class Main {          public static void main(String args[])      {      int num_Array[] = {5,10,15,20,25,30};        int clone_Array[] = num_Array.clone();       System.out.println("Original num_Array:");     for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3