1,for循环拷贝数组
对基本类型来说是深拷贝
代码如下:
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[]{1,2,3,4,5,6,7,8,9};
int[] array2 = new int[array1.length];
for(int i = 0;i < array1.length;i++){
array2[i] = array1[i];
}
//分别打印两个数组,进行比较,看有没有拷贝成功
System.out.println("array1:"+Arrays.toString(array1));
System.out.println("array2:"+Arrays.toString(array2));
}
}
2,clone方法拷贝
基本形式:array2 = array1.clone();
对基本类型来说是深拷贝
代码如下:
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[]{1,2,3,4,5,6,7,8,9};
int[] array2 = new int[array1.length];
array2 = array1.clone();
System.out.println("array1:"+Arrays.toString(array1));
System.out.println("array2:"+Arrays.toString(array2));
}
}
3, System.arraycopy();
基本形式:(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度);
拷贝速度最快,因为底层代码都是C\C++完成的;
对基本类型来说是深拷贝
代码如下:
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[]{1,2,3,4,5,6,7,8,9};
int[] array2 = new int[array1.length];
System.arraycopy(array1,0,array2,0,array1.length);//可以自行变换拷贝内容,但必须是连续的
System.out.println("array1:"+Arrays.toString(array1));
System.out.println("array2:"+Arrays.toString(array2));
}
}
4,Arrays.copyOf();
对基本类型来说是深拷贝;
代码如下:
import java.util.Arrays;
public class ArrayCopy {
public static void main(String[] args) {
int[] array1 = new int[]{1,2,3,4,5,6,7,8,9};
int[] array2 = new int[array1.length];
array2 = Arrays.copyOf(array1,array1.length);
System.out.println("array1:"+Arrays.toString(array1));
System.out.println("array2:"+Arrays.toString(array2));
}
}
以上四种拷贝方式:如果数组里面放的是引用类型, 一定是浅拷贝