深拷贝与浅拷贝
深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。
下面用.copyOf()方法举一个例子
public static void main(String[] args) {
int[] array1={1,2,3,4};
System.out.println(Arrays.toString(array1));
int[] array2= Arrays.copyOf(array1,array1.length);
System.out.println("============");
for (int i = 0; i < array2.length; i++) {
array2[0]=99;
System.out.print(array2[i]+" ");
}
}
运行结果如下
可以看出,通过array2[0]=99;影响不了array1[0],这种拷贝就叫做深拷贝
而且就算想要达到深拷贝,那么对象也必须要拷贝。
浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝
而在浅拷贝里面,由于此时数组里面存放的是引用数据类型,如下图
重点来了!!!
如果面试官问,你这几种拷贝方式是深拷贝还是浅拷贝?
那就要看拷贝的是什么对象?
(1).如果是引用类型***,且单纯的使用.copyOf()等方法那么就是浅拷贝*,如果代码本身处理了深拷贝,那么就是深拷贝。
(2).如果是基本数据类型,那么就是深拷贝。