Java Arrays.copyOf()方法

原文:https://www.studytonight.com/java-util/java-arrays-copyof-method

在本教程中,我们将学习 Java 中的copyOf()方法。该方法属于位于java.util包的Arrays类。它用于从现有数组创建新数组或将一个数组复制到另一个数组。

句法

这是copyOf()方法的语法。此方法接收具有新数组长度的现有数组,并返回具有旧数组值的新数组。

public static datatype[] copyOf(datatype[] arr,int newLength)

重载方法列表

此表包含 Arrays 类的copyOf()方法的所有重载变体。

|

方法

描述
静态布尔[] copyOf(布尔[] original,int newLength) 此方法复制指定的数组,用 false 截断或填充(如有必要),使副本具有指定的长度。
静态字节[] copyOf(字节[] original,int newLength) 此方法复制指定的数组,截断或填充零(如有必要),使副本具有指定的长度。
静态 char[] copyOf(char[] original,int newLength) 此方法复制指定的数组,用空字符截断或填充(如有必要),使副本具有指定的长度。
静态 double[]copy of(double[]original,int newLength) 此方法复制指定的数组,截断或填充零(如有必要),使副本具有指定的长度。
静态 float[] copyOf(float[] original,int newLength) 此方法复制指定的数组,截断或填充零(如有必要),使副本具有指定的长度。
静态 int[] copyOf(int[] original,int newLength) 此方法复制指定的数组,截断或填充零(如有必要),使副本具有指定的长度。
静长[] copyOf(长[] original,int newLength) 此方法复制指定的数组,截断或填充零(如有必要),使副本具有指定的长度。
静态短[] copyOf(短[]origin,int newLength) 此方法复制指定的数组,截断或填充零(如有必要),使副本具有指定的长度。
静态< T > T[]副本(T[]原件,int newLength) 此方法复制指定的数组,用空值截断或填充(如有必要),使副本具有指定的长度。
静< T,?U > T【】文案(U【】原文,**int newLength,Class <?扩展 T[] >新类型)** 此方法复制指定的数组,用空值截断或填充(如有必要),使副本具有指定的长度。

实现 copyOf()方法的示例

在下面的例子中,我们正在从长度为 4 的现有数组arr 创建一个新数组new_arry 。从这个程序的输出中,我们可以比较这两个数组。数组中的所有四个元素都按原样复制到新数组中。这表明我们可以使用copyOf()方法从现有数组创建不同大小的新数组。

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        int[] arr = new int[] {5, 6, 7, 10, 17};

        System.out.println("Original Array"); 
        for(int num:arr)
        {
            System.out.print(num+" ");
        } 

        int[] new_arr = Arrays.copyOf(arr, 4); 

        System.out.println("\nNew Array"); 
        for(int num:new_arr)
        {
            System.out.print(num+" ");
        }
    }
}

原阵 5 6 7 10 17 新阵 5 6 7 10

示例:将数组复制到更大的数组中

在下面给出的代码中,我们可以清楚地看到现有数组的数组长度为5,新数组的长度为10 ,这意味着新数组缺少新数组元素的5 值。在这种情况下,剩余的元素将被指定为0

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        int[] arr = new int[] {5, 6, 7, 10, 17};

        System.out.println("Original Array"); 
        for(int num:arr)
        {
            System.out.print(num+" ");
        } 

        int[] new_arr = Arrays.copyOf(arr, 10); 

        System.out.println("\nNew Array"); 
        for(int num:new_arr)
        {
            System.out.print(num+" ");
        }
    }
}

原阵 5 6 7 10 17 新阵 5 6 7 10 17 0 0 0 0 0

示例:复制不同类型的数组

在本例中,我们实现了 copy()方法的所有其他变体,以检查它们如何与其他变体一起工作

import java.util.Arrays;
public class StudyTonight 
{
    public static void main(String[] args) 
    {
        //Example of static boolean[] copyOf(boolean[] original, int newLength)
        boolean[] array1={true, false, true, false, false, true};
        boolean[] new_arr1=Arrays.copyOf(array1, 6);
        System.out.println("New Boolean Array: "+Arrays.toString(new_arr1));

        //Example of static byte[]    copyOf(byte[] original, int newLength)
        byte[] array2={4, 1, 8, 2, 2, 3, 16, 4, 4};
        byte[] new_arr2=Arrays.copyOf(array2, 7);
        System.out.println(Arrays.toString(new_arr2));

        //Example of static char[]    copyOf(char[] original, int newLength)
        char[] array3={'a', 'e', 'i', 'o', 'u'};
        char[] new_arr3=Arrays.copyOf(array3, 10);
        System.out.println(Arrays.toString(new_arr3));

        //Example of static double[] copyOf(double[] original, int newLength)
        double[] array4={12, 3, 17, 5, 8, 17, 2, 37};
        double[] new_arr4=Arrays.copyOf(array4, 10);
        System.out.println(Arrays.toString(new_arr4));

        //Example of static float[]    copyOf(float[] original, int newLength)
        float[] array5={4.12f, 7.3f, 8.17f, 1.5f, 7.8f, 4.17f, 3.2f, 6.37f};
        float[] new_arr5=Arrays.copyOf(array5, 7);
        System.out.println(Arrays.toString(new_arr5));

        //Example of static int[]    copyOf(int[] original, int newLength)
        int[] array6 ={5, 6, 7, 10, 17};        
        int[] new_arr6=Arrays.copyOf(array6, 5);
        System.out.println(Arrays.toString(new_arr6));

        //Example of static long[]    copyOf(long[] original, int newLength)
        long[] array7={4,54,56,584,51,84,5,28,33,9};
        long[] new_arr7=Arrays.copyOf(array7, 5);
        System.out.println(Arrays.toString(new_arr7));

        //Example of static short[]    copyOf(short[] original, int newLength)
        short[] array8={10, 8, 6, 4, 2, 0};
        short[] new_arr8=Arrays.copyOf(array8, 5);
        System.out.println(Arrays.toString(new_arr8));
    }
}

新布尔数组:【真、假、真、假、真】 【4、1、8、2、2、3、16】 【a、e、I、o、u】 【12.0、3.0、17.0、5.0、8.0、17.0、2.0、37.0、0.0、0.0】 【4.12、7.3、8.17、1.5、7.8、

结论:

在本教程中,我们学习了如何使用copyOf()方法使用现有数组创建新数组。新数组元素将从旧数组的现有值中赋值。如果新数组的长度大于旧数组的长度,在这种情况下,所有剩余的元素将被赋为零。