Topic: 还是传递的问题

  Print this page

1.还是传递的问题 Copy to clipboard
Posted by: luis_liu
Posted on: 2005-01-23 23:32

class ArrayArgument
{

  public static void main(String args[])
  {
    int x[]={11,12,13,14,15};
    displayFight;
    changeFight;
    displayFight;
  }
  public static void change(int x[])
  {
    
    x[0]=22;              x[1]=22; //3 change后改变X的值

    //x=new int[]{21,22,23,24,25}; //2 change后未改变

    /*
    int y[]={21,22,23,24,25}; //1 change后未改变
    x=y;
    */
  }
  public static void display(int x[])
  {
    for (int i=0;i<x.length ;i++ )
    {
      System.out.print(x[i]+"");
    }
    System.out.println("");
  }
}

我想知道为什么会改变原数组中的数据
请赐教

ArrayArgument.java (0.54k)

2.Re:还是传递的问题 [Re: luis_liu] Copy to clipboard
Posted by: luis_liu
Posted on: 2005-03-17 16:14

为什么啊

3.Re:还是传递的问题 [Re: luis_liu] Copy to clipboard
Posted by: xinye0123
Posted on: 2005-03-17 22:51

1,3情况是传递的是引用(指针),自然会改变,第2中情况,x被重新分配了,相当于重新定义了x,但是这个变量是作用域只在change里有效,到外面就无效了,因此不能改变原来的x,不知道你明白了没有,这确实很容易混淆

4.Re:还是传递的问题 [Re: luis_liu] Copy to clipboard
Posted by: xinye0123
Posted on: 2005-03-17 22:55

再补充一下,每个函数内部new出来的变量它的作用域只在函数体内部,除非它是static的


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923