Java 数组的浅拷贝和深拷贝

浅拷贝:

在堆内存中不会分配新的空间,而是增加一个引用变量和之前的引用指向相同的堆空间。

int[] a = {1,2,3,4,5};

int[]b = a;

public class Test {
    
    public static void main(String[] args) {
        
        //数组的浅拷贝,a,b两个引用指向同一个数组
        int[] a = {1,2,3,4,5};
        int[] b = a;
        
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
        
        System.out.println();
    }
}

深拷贝:

在堆内存中分配新空间,将之前的数组堆内存中的内容拷贝到新的空间中。

int[] a = {1,2,3,4,5};

int[] b = new int[5];

System.arraycopy(a, 0, b, 0, 5);

public class Test {
    
    public static void main(String[] args) {
        
        //数组的深拷贝,a,b两个引用指向同一个数组
        int[] a = {1,2,3,4,5};
        int[] b = new int[5];
        
        /**
         * System.arraycopy(src, srcPos, dest, destPos, length);
         * src:源数组
         * srcPos:源数组中拷贝的起始位置
         * dest:目标数组
         * destPos:目标数组中开始存放的位置
         * length:拷贝的长度
         */
        System.arraycopy(a, 0, b, 0, a.length);
        
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
        
        System.out.println();
    }
}
原文地址:https://www.cnblogs.com/lialong1st/p/7833776.html