Java之复制数组的四种方式总结

1. 使用Arrays类的copyOf函数

该函数的函数签名如下: T[] copyOf(T[] src, int length)

复制src数组到一个新的数组,新数组的长度为length,如果length > src.length, 则新数组后面多出的空间将用这一种数据类型的默认值填充,如int填充0,如果小于,则截断后面一部分。

import java.util.*;

public class Main {
    public static void main(String[] args)  {
        int[] src = {0, 1 , 2, 3, 4};
        int[] des = Arrays.copyOf(src, 5);
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");

        des = Arrays.copyOf(src, 7);
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");

        des = Arrays.copyOf(src, 3);
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");
        //输出为: 0 1 2 3 4 
        //0 1 2 3 4 0 0 
        //0 1 2 
    }
}

2. 使用Arrays类的copyOfRange方法

该函数的签名如下: T[] copyOfRange(T[] src, int begin, int end)

复制src数组中索引从begin到end的元素到返回数组中,包括begin,不包括end。如果end超出了src数组的范围,则结果数组中的多余空间会用默认值填充。

import java.util.*;

public class Main {
    public static void main(String[] args)  {
        int[] src = {0, 1 , 2, 3, 4};
        int[] des = Arrays.copyOfRange(src, 0, 5);
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");

        des = Arrays.copyOfRange(src, 1, 7);
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");

        des = Arrays.copyOfRange(src, 3, 5);
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");
        //输出为:0 1 2 3 4 
        //1 2 3 4 0 0 
        //3 4 
    }
}

3. 使用System类的arraycopy方法

该函数的方法签名如下:void arraycopy(T[] src, int begin, T[] des, int des_begin, int length)

将src数组从索引begin开始的地方开始复制到des数组的des_begin开始处,一共复制length长度。

public class Main {
    public static void main(String[] args)  {
        int[] src = {0, 1 , 2, 3, 4};
        int[] des = new int[8];
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");
        System.arraycopy(src, 1, des, 3, 4);
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");
        //输出为:0 0 0 0 0 0 0 0 
        //0 0 0 1 2 3 4 0 
    }
}

4.使用Object类的clone方法

该函数的方法签名如下: Object[] clone(); clone方法复制得到的是Object类型的数组,需要强制转型

public class Main {
    public static void main(String[] args)  {
        int[] src = {0, 1 , 2, 3, 4};
        int[] des = (int[])src.clone();
        for (int i = 0; i < des.length; i++) {
            System.out.print(des[i] + " ");
        }
        System.out.println("");

        //输出为:0 1 2 3 4
    }
}
全部评论

相关推荐

10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务