public void a(int a[])
    {
    int b[];
    b=a;
 /*更改b数组代码*/
   }
   int a[]={1,2,3};
     
   a(a);  //执行后,发现在方法a中更改b数组的操作,也同时作用在数组a上。是不是传递数组的地址导致的。如何使得a数组不受影响

解决方案 »

  1.   

    就是用clone,下面这段代码的输出结果为:
    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]+" ");
    }
    }
      

  2.   

    用clone()获得保护性拷贝,然后对拷贝进行处理,就没问题了。