解决方案 »

  1.   

    java中int 是基本数据类型, int[] 是数组,为引用数据类型。
    java中引用数据类型作为参数传递是传递的是堆内存中的地址
    而基本数据类型作为参数传递是传递的数值,传递后与原来的变量已没有关系,所以不会改变
      

  2.   


    那如果要改变引用类型的值,该怎么做呢?引用类型 指的是堆中一个地址。 而地址对应的就是那个数组, 你可以重新声明一个数组c 把  c = a; 这样c[3] 也就是88了
      

  3.   

    在C中有指针类型,而且你可以通过&获取一个变量的地址,所以你可以把一个变量的地址作为参数传进函数,从而通过指针改变变量的值
    比如上例中的f(&i),就是取i的地址,然后传递给void f(int * p)中的指针参数p,这样通过指针解引用*p=10你就可以改变原来那个变量的值。但是Java第一没有指针类型,第二不能轻易获取一个变量的地址,所以比如int b = 5; swap(b),你传进去的只是b变量的值,而不是b的地址,而由于没有指针类型,就算你得到了地址,你也无法通过地址改变变量的值。而Java中的引用类型,实际上是被弱化的指针类型,比如int[] a,那么a相当于C中的int *a,就是指向int的一个指针,既然是指针,那么你作为参数传递给函数,就可以达到修改原来变量的值的目的,比如arg0[3] = 88相当于C中*(arg0+3)=88。