浅拷贝:
在堆内存中不会分配新的空间,而是增加一个引用变量和之前的引用指向相同的堆空间。
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(); } }