在Java中没有指针传递这一说法,传递都是对象的副本,如果引用了副本的方法,则会改变原本的属性,因为副本和原本是指向同一个位置的。所会出这种情况

解决方案 »

  1.   

    这个问题被问过N次了
    JAVA是值传递,传递数组地址的值;
    数组地址的值不会变
    但数组地址的值指向的内容是可以被改变的
      

  2.   

    chang(x)调用的时候!x指向的地址空间并没有变化,所以没有变化
    x=chang(x)调用的时候,函数内部的临时变量,指向了y的地址空间,当赋值后,x也指向了y的地址空间,所以变化了!
      

  3.   

    当代码中"x = change(x);"改为"change(x);"时则结果为:
    11,12,13,14,15
    11,12,13,14,15这样是对的,因为此时x的值还是原来的值没有改变,x = change(x)这样就改变了。具体你可以看看
    http://www.bol-system.com/SUPPORT/optimize.htm
      

  4.   

    public static void change(int x[]){
    int y[]={21,22,23,24,25};
    x=y;
    }
    这一方法不是将X数组地址的值改变为Y数组地址的值了吗?在下面
    public static void display(int x[]){
    for(int i=0;i<x.length;i++)
    System.out.print(x[i]+" ");
    System.out.println(" ");
    }
    中参数调用的是X数组的引用,那为什么没有调用y数组的元素值?
      

  5.   

    public static void change(int x[]){
    int y[]={21,22,23,24,25};
    x=y;
    }
    这一方法不是将X数组地址的值改变为Y数组地址的值了吗?
    这样在下而后的display(x)方法使用时不就是调用了Y的地址了吗?
      

  6.   

    这是一个很基本的问题,希望你好好学习方法change(x)不能改变全局变量的值,在java中,这里只是传值而不是传引用(指针)x=change(x);这里改变是因为你重新给x值赋值了,比如你修改change(x)为change(){return y;}这里的x,有局部和全局变量之分,你不要混淆好好学习,祝你成功
      

  7.   

    楼主真晕,java是传值,其他自己去想。