您的位置:首页 > 编程语言 > Java开发

Java 如何拷贝数组的数据?

2016-08-15 21:49 281 查看
我们在操作Java数组的时候,其实是通过一个引用来操作数组的,如果使用简单的=操作符进行赋值的话,只是复制了引用,并没有把数组的数据复制一份。

我们在拷贝数组时,最容易犯的一种错误就是使用赋值运算符=来复制数组,然后对新数组的操作的操作也影响到原数组的数据,那是因为它们根本指向的是同一内存空间。

代码如下:

public class Test3 {

public static void main(String[] args) {
int []arr=new int[]{1,2,3};
int []arr2=arr;//赋值引用
arr2[2]=8;//改变一个元素的值
System.out.println(arr.length);
for(int i:arr){
System.out.println(i);
}
}
}


在以上的代码中,创建了一个长度为3的int型数组arr,然后用赋值运算符=把arr赋值给arr2,通过arr2把它的下标为2的元素的值改为8,然后输出arr,结果如下:

1

2

8

通过运行结果可以看出,arr数组的数据被arr2给修改了,而我们的本意是想创建俩个独立的数组,它们是互不影响的,其实,拷贝数组数据应该使用System.arraycopy()方法,代码如下:

public class Test3 {

public static void main(String[] args) {
int []arr=new int[]{1,2,3};
int []arr2=new int[3];
System.arraycopy(arr, 0, arr2, 0, arr.length);
arr2[2]=8;
for(int i:arr){
System.out.println(i);
}
}
}

结果如图:

1

2

3

可以看见,俩个数组已经互不影响了~

注意:我们自己也可以写一个数组拷贝方法,关键点在于认识数组的内存结果。

总结:

使用System.arraycopy()方法或者创建一个新的数组实例,然后把数据一个个装进去,不能用=赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息