Java数组如何复制?java学习教程之java数组复制

阳光 2022-09-15 14:45:46 java常见问答 7734

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。在实际工作中,我们有时候需要价格java数组复制出来,那Java数组如何复制?接下来我们就来给大家讲解一下java学习教程之java数组复制。

java学习教程.jpg

Arrays 类的 copyOf() 方法与 copyOfRange() 方法都可实现对数组的复制。copyOf() 方法是复制数组至指定长度,copyOfRange() 方法则将指定数组的指定长度复制到一个新数组中。

1. 使用 copyOf() 方法对数组进行复制

Arrays 类的 copyOf() 方法的语法格式如下:

Arrays.copyOf(dataType[] srcArray,int length);

其中,srcArray 表示要进行复制的数组,length 表示复制后的新数组的长度。

使用这种方法复制数组时,默认从原数组的第一个元素(索引值为 0)开始复制,目标数组的长度将为 length。如果 length 大于 srcArray.length,则目标数组中采用默认值填充;如果 length 小于 srcArray.length,则复制到第 length 个元素(索引值为 length-1)即止。

注意:目标数组如果已经存在,将会被重构。

例 1

假设有一个数组中保存了 5 个成绩,现在需要在一个新数组中保存这 5 个成绩,同时留 3 个空余的元素供后期开发使用。

使用 Arrays 类的 CopyOf() 方法完成数组复制的代码如下:

import java.util.Arrays;
public class Test19
{
    public static void main(String[] args)
    {
        // 定义长度为 5 的数组
        int scores[] = new int[]
        {
            57
            , 81
            , 68
            , 75
            , 91
        };
        // 输出原数组
        System.out.println("原数组内容如下:");
        // 循环遍历原数组
        for (int i = 0; i < scores.length; i++)
        {
            // 将数组元素输出
            System.out.print(scores[i] + "\t");
        }
        // 定义一个新的数组,将 scores 数组中的 5 个元素复制过来
        // 同时留 3 个内存空间供以后开发使用
        int[] newScores = (int[]) Arrays.copyOf(scores, 8);
        System.out.println("\n复制的新数组内容如下:");
        // 循环遍历复制后的新数组
        for (int j = 0; j < newScores.length; j++)
        {
            // 将新数组的元素输出
            System.out.print(newScores[j] + "\t");
        }
    }
}

在上述代码中,由于原数组 scores 的长度为 5,而要复制的新数组 newScores 的长度为 8,因此在将原数组中的 5 个元素复制完之后,会采用默认值填充剩余 3 个元素的内容。

因为原数组 scores 的数据类型为 int,而使用 Arrays.copyOf(scores,8) 方法复制数组之后返回的是 Object[] 类型,因此需要将 Object[] 数据类型强制转换为 int[] 类型。同时,也正因为 scores 的数据类型为 int,因此默认值为 0。

运行的结果如下所示。

原数组内容如下:
57 81 68 75 91
复制的新数组内容如下:
57 81 68 75 91 0 0 0

2. 使用 CopyOfRange() 方法对数组进行复制

Arrays 类的 CopyOfRange() 方法是另一种复制数组的方法,其语法形式如下:

Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex)

其中:

srcArray 表示原数组。

startIndex 表示开始复制的起始索引,目标数组中将包含起始索引对应的元素,另外,startIndex 必须在 0 到 srcArray.length 之间。

endIndex 表示终止索引,目标数组中将不包含终止索引对应的元素,endIndex 必须大于等于 startIndex,可以大于 srcArray.length,如果大于 srcArray.length,则目标数组中使用默认值填充。

注意:目标数组如果已经存在,将会被重构。

例 2

假设有一个名称为 scores 的数组其元素为 8 个,现在需要定义一个名称为 newScores 的新数组。新数组的元素为 scores 数组的前 5 个元素,并且顺序不变。

使用 Arrays 类 copyOfRange() 方法完成数组复制的代码如下:

public class Test20
{
    public static void main(String[] args)
    {
        // 定义长度为8的数组
        int scores[] = new int[]
        {
            57
            , 81
            , 68
            , 75
            , 91
            , 66
            , 75
            , 84
        };
        System.out.println("原数组内容如下:");
        // 循环遍历原数组
        for (int i = 0; i < scores.length; i++)
        {
            System.out.print(scores[i] + "\t");
        }
        // 复制原数组的前5个元素到newScores数组中
        int newScores[] = (int[]) Arrays.copyOfRange(scores, 0, 5);
        System.out.println("\n复制的新数组内容如下:");
        // 循环遍历目标数组,即复制后的新数组
        for (int j = 0; j < newScores.length; j++)
        {
            System.out.print(newScores[j] + "\t");
        }
    }
}

在上述代码中,原数组 scores 中包含有 8 个元素,使用 Arrays.copyOfRange() 方法可以将该数组复制到长度为 5 的 newScores 数组中,截取 scores 数组的前 5 个元素即可。

该程序运行结果如下所示。

原数组内容如下:
57 81 68 75 91 66 75 84
复制的新数组内容如下:
57 81 68 75 91

其实复制数组就是指将一个数组中的元素在另一个数组中进行复制,我们可以使用 copyOf() 方法和 copyOfRange() 方法,大家可以自己去试试哦!最后大家如果想要了解更多java入门知识,敬请关注奇Q工具网。

推荐阅读:

qt安装哪些组件?qt安装版本怎么查看?

json中有复杂的嵌套怎么解析?json复杂的嵌套解析方法

springcloud怎么限流面试题?springcloud实现限流实操