public void a(int a[])
{
int b[];
b=a;
/*更改b数组代码*/
}
int a[]={1,2,3};
a(a); //执行后,发现在方法a中更改b数组的操作,也同时作用在数组a上。是不是传递数组的地址导致的。如何使得a数组不受影响
{
int b[];
b=a;
/*更改b数组代码*/
}
int a[]={1,2,3};
a(a); //执行后,发现在方法a中更改b数组的操作,也同时作用在数组a上。是不是传递数组的地址导致的。如何使得a数组不受影响
0 0 0 0 0 0 0 0 0 0
1 2 3 4 5 6 7 8 9 0 代码如下:
package com.ddpie;public class TestArray {
public static void changeArrayValue(int[] in){
int[] tmp = in;
for(int i=0 ; i<tmp.length ; i++){
tmp[i] = 0;
}
}
public static void doNotChangeValue(int[] in){
int[] tmp = (int[]) in.clone();//关键是这行
for(int i=0 ; i<tmp.length ; i++)
tmp[i] = 0;
}
public static void main(String[] args){
int[] array = new int[]{1,2,3,4,5,6,7,8,9,0};
TestArray.changeArrayValue(array);
for(int i=0 ; i<array.length ; i++)
System.out.print(array[i]+" ");
System.out.println();
array = new int[]{1,2,3,4,5,6,7,8,9,0};
TestArray.doNotChangeValue(array);
for(int i=0 ; i<array.length ; i++)
System.out.print(array[i]+" ");
}
}