当前位置: java社区 > 02-初窥门径 > 阅读正文

java二维数组深拷贝

2021.8.25.   387 次   696字

java的数组是一个引用数据类型,必须深拷贝才能真正的复制

深拷贝是指复制数据内容,浅拷贝是指复制引用地址

以二维数组为例,这里假设长度不确定,则需要求出所有的一维数组,再复制到二维数组中,可以使用Arrays.deepToString(Object)方法快速打印二维数组。

    public static void main(String[] args) {

        int[][] a = {{1,2,3},{4,5},{6,7,8,9}};

        int[][] b = new int[a.length][];  // a 拷贝至 b

        for (int i = 0; i < a.length; i++) {
            int[] ab = new int[a[i].length];
            for (int j = 0; j < a[i].length; j++) {
                ab[j] = a[i][j];
            }
            b[i] = ab;
        }

        System.out.println(Arrays.deepToString(b));


    }

程序执行结果:

  • [[1, 2, 3], [4, 5], [6, 7, 8, 9]]

此外,针对一维数组,java.util.Arrays提供拷贝方法copyOf,上述代码可以改为:

    public static void main(String[] args) {

        int[][] a = {{1,2,3},{4,5},{6,7,8,9}};


        int[][] b = new int[a.length][];  // a 拷贝至 b

        for (int i = 0; i < a.length; i++) {
            b[i] = Arrays.copyOf(a[i],a[i].length);  // 数组,终止位置
        }

        System.out.println(Arrays.deepToString(b));

    }

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群