当一个对象被当做参数传递到一个方法后,此方法可以改变这个对象的属性并可以返回变化后的结果,这到底是值传递还是引用传递?说得详细点,谢谢!

解决方案 »

  1.   

    textA a1 = new textA ();
    textA a2 = a1;
    引用传递时,对a2操作相当与对a1操作
    也就是说:a2 与a1 是同一个对象的两个不同的名字而在值传递时,a2会另外分一个与a1不同的空间
    对任何一个对象操作都不影响到对方.
      

  2.   

    这是值传递啊,Java和C#不同,Java只有值传递
      

  3.   


    java虽然只有值传递,但当传递的是一个引用的引用时(就像C++中的指向指针的指针一样),这时就相当于C++中的引用传递了。就是说当传递的引用是指向堆中的一个指向对象的引用时,这时再弄个副本,还是指向那个对象。
      

  4.   


    楼主说的情况的一个例子就是传递一个对象数组。数组本身在堆中,而且存的都是对象的引用。当参数传过去。堆中出现另一个数组,是这个数组的拷贝。但数组的值是一样的,所以还是指向每一个对象。这样看起来是所谓的引用传递(java中只有值传递)。但传递本身只是传递了数组的引用过去。只是传过去后进行的拷贝不是深拷贝。只拷贝从栈到堆的指向这一级。