文章目录
深拷贝与浅拷贝的区别
假设现在有原数组A以及拷贝后的数组B,若是改变A中的某一个值,B数组随之相应的发生变化的拷贝方式称为浅拷贝,反之B数组不受影响,则称为深拷贝;
简单总结一下两者的概念:
深拷贝:拷贝后,修改原数组,不会影响到新数组;
浅拷贝:拷贝后,修改原数组,新数组也会相应的发生改变;
1. for循环进行拷贝
拷贝数值类型
当数组中存放的元素为基本数据类型时,此时发生的是深拷贝;
//1. for循环拷贝 (拷贝数值类型) ---深拷贝
public static void main(String[] args) {
int[] A = {
1,2,3,4,5};
int[] B = new int[A.length];
for (int i = 0; i < A.length; i++) {
B[i] = A[i];
}
System.out.println("A : " + Arrays.toString(A)); //A : [1, 2, 3, 4, 5]
System.out.println("B : " + Arrays.toString(B)); //B : [1, 2, 3, 4, 5]
System.out.println("===========修改后===========");
A[0] = 100;
System.out.println("A : " + Arrays.toString(A)); //A : [100, 2, 3, 4, 5]
System.out.println("B : " + Arrays.toString(B)); //B : [1, 2, 3, 4, 5]
}
//打印对象数组的方法
public static void show(Num[] arrays) {
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i].getVal() + " ");
}
System.out.println();
}
class Num{
public int val = 0;
public Num(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
拷贝引用类型
当数组中存放的元素为引用数据类型时,此时发生的是浅拷贝;
//1. for循环拷贝 (拷贝引用数据类型) ---浅拷贝
public static void main(String[] args) {
Num[] A = new Num[4];