there's no pointer in java, it's just a reference.
I known what your question is, but I don't know the answer clearly.In test1, within the testA method, a will reference to b, but when the method call was end, b no longer exit, so where should a reference? I don't know, someone else?

解决方案 »

  1.   

    我觉得是传递了引用
    test1好像是说不能改变作为引用所指的东西
      

  2.   

    我觉得因为b是一个局部的变量,所以在test1中a=b的赋值是无效的(对于外部而言),因此,回到main时a不回改变
      

  3.   

      因为在Java中有两类变量,基本类型,如:int ,boolean,string一类,第二类就是对象和数组。在Java中,只能按值传递基本类型,即是传递该变量的一份拷贝,不会改变变量的值。同样,Java总是引用传递非基本类型,当按引用调用方法时,该方法对变量所作的任何改变都是永久性的。而在Test1中之所以a没有改变,只是因为a=b这条语句并不改变下面的a的值。但是并不是因为楼上的说的b是局部变量喔,而是因为此处的a与下面的a并不匹配,此处的a的长度可是不定的喔!
      

  4.   

    Test8
    public class TestArray
    {
      TestArray()
      {
      }
    float[] a={1.1f,2.2f,3.3f}; public void  abc()
     {
     float[] b={0,0,0,0};
     a=b; } public float[] getA()
     {
     return a;
     }
    public static void main(String[] args)
    {
    TestArray aa=new TestArray();
    float[] b;
    aa.abc();
    b=aa.getA();
    System.out.println(b[1]);
    }
    }
    结果是0.0。我现在发现test1难理解。别的还行。对象应该是一个reference,但test1究竟怎么理解?a=b这句话改变了什么?elva(花语) 请注意这个a是由原来的a传递过来的。当然,这里叫什么名字是无所谓的。
    高手看看。
      

  5.   

    上面几位说的基本都对附与code说明:
    //不是用b这个局部变量public class TestArray {  public TestArray() {
      }public void testA(float[] a)
      {
        float[] b=new float[a.length];
        for(int i=0;i<b.length;i++)
        a[i]=i*i;    //a=b;    System.out.println("2------->"+b) ;
        System.out.println("3------->"+"adress:"+a+" value:"+a[1]) ;
      }
      public static void main(String[] args)
      {
        float[] a={1.1f,2.2f,3.3f};
        TestArray object=new TestArray();
        System.out.println("1------->"+"adress:"+a+" value:"+a[1]) ;
        object.testA(a);
        System.out.println("1------->"+"adress:"+a+" value:"+a[1]) ;
      }}//在用b这一局部变量 a=b时public class TestArray {  public TestArray() {
      }public void testA(float[] a)
      {
        float[] b=new float[a.length];
        for(int i=0;i<b.length;i++)
        b[i]=i*i;    a=b;    System.out.println("2------->"+b) ;
        System.out.println("3------->"+"adress:"+a+" value:"+a[1]) ;
      }
      public static void main(String[] args)
      {
        float[] a={1.1f,2.2f,3.3f};
        TestArray object=new TestArray();
        System.out.println("1------->"+"adress:"+a+" value:"+a[1]) ;
        object.testA(a);
        System.out.println("1------->"+"adress:"+a+" value:"+a[1]) ;
      }}
      

  6.   

    在test8中,a是全局变量啊!在Test1中,a=b什么都没有改变。
      

  7.   

    test1中,虽然有a=b,但是并不会回传给实参!因为a=b其实是要改变引用,但是不会回传!
     可