上篇文章讲了Java数组的赋值机制
public class test{
public static void main(String[] args){
//数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值。
//是一个地址,n2的变化会影响n1
int[] n1 = {1,2,3};
int[] n2 = n1;
n2[0] = 11;
for(int a = 0;i < n1.length; a++){
System.out.prinln(a[i]);//输出11,2,3
}
}
}
当给n2[0]赋值时,n1[0]也会随之改变。、
那么如果我就只想要复制,不想要n1或n2由于对方的变动而变动呢?也就是说要求数据空间必须是独立的。
public class test{
public static void main(String[] args){
int[] n1 = {1,2,3};
//这里我们需要创建一个新的数据空间
int[] n2 = new int[n1.length];
//遍历n1,将每个元素拷贝到n2对应位置。
for(int i = 0;i < n1.length; i++){
n2[i] = n1[i];
}
for(int i = 0;i < n1.length; i++){
System.out.println(n1[i]);//输出 1,2,3
}
for(int i = 0;i < n2.length; i++){
System.out.println(n2[i]);//输出 1,2,3
}
n2[0] = 100;
for(int i = 0;i < n1.length; i++){
System.out.println(n1[i]);//输出 1,2,3
}
for(int i = 0;i < n2.length; i++){
System.out.println(n2[i]);//输出 100,2,3
}
}
}
由此可见,现在我们再对n2进行修改,便不会再影响到n1了。