public static  void change(int x[])相当与
 int []temp = x;
 ...
 temp = y;   你只能修改temp[i], 修改temp与你的x没有关系。

解决方案 »

  1.   

    说不清为什么 :(System.arraycopy(y, 0, x, 0, y.length);
      

  2.   

    java语言总是传值调用。方法不能修改传递给它的任何参数变量的内容!
    对于public static  void change(int x[]){
            int y[]={21,22,23,24,25};
                     x=y;}
    x在方法被调用结束后,x的值还是没有改变。
      

  3.   

    数组,对象,和接口都属于引用类型
    把数组作为参数传递,传过去的只是它的一个引用,把这个引用指向新的数组,对原数组没有改变public static  void change(int x[]){
            int y[]={21,22,23,24,25};
            x=y;     //如果x不是一个数组,而是一个对象的话,通过对传过来的引用(实际上是复制了一个引用)进行操作,会改变原来的对象,但是,你现在是把这个引用指向了新的对象,原对象不会改变。
    }
      

  4.   

    这个跟
    class A {
    int x;
    public void swappingTheObjectsAlwaysFailsOutsideTheMethod(A a1, A a2) {
      A temp = a1;
      a1 = a2; 
      a2 = temp;
    }public void swappingTheObjectsFieldsWorks(A a1, A a2) {
      int temp = a1.x;
      a1.x = a2.x;
      a2.x = temp;
    }public static void main(String[] args) {
      A swap1 = new A(); swap1.x = 1;
      A swap2 = new A(); swap2.x = 2;
      swappingTheObjectsAlwaysFailsOutsideTheMethod(swap1, swap2);
      System.out.println(swap1.x);
      swappingTheObjectsFieldsWorks(swap1, swap2);
      System.out.println(swap1.x);
    }
    }一个道理,数组(不管是不是int[])也是对象,每个数组元素相当于这个对象的一个字段
      

  5.   

    反正记住这么一句话:传A改x才有用而传A改A在方法里面有效,除了方法就没用
      

  6.   

    这是JAVA语言非常特殊的问题之一;
    应该每一本JAVA的入门书都有分析的!
      

  7.   

    你的问题用C++来表示就是:
    int *x={11,12,13,14,15};
    void chang(int *x){
      x=y;
    }如果你要改变x指向的数组的值,就要改变*x, 而不是x, 如下:
    int *x={11,12,13,14,15};
    void chang(int *x){
      *x=?;
      *(x+1)=?;
      ...
    }
      

  8.   

    这样应该可以了:
    class ArrayArgument{public static void main(String args[]){
        int x[]={11,12,13,14,15};
        display(x);
        change(x);
        display(x);
        }
        public static  void change(int x[]){
            int y[]={21,22,23,24,25};
            for(int m=0;m<5;m++)
            {
             x[m]=y[m];
            }                                          
           }
       
        public static void display(int x[]){
            for(int i=0;i<x.length;i++)
            System.out.print(x[i]);
            System.out.println("");
            }
    }