引用型形参的改变会不会影响原来实参的值??String类型除外。。

解决方案 »

  1.   

    java全是值传递
    你传一个引用,引用本身是不会改变的 hashcode()不会改变,对象中的内容会不会改变呢?试试吧
    public class TestHashCode {
        public static void main(String[] args) {
    Reference reference = new Reference();
    System.out.println("Reference = " + reference);
    System.out.println("Reference.hashcode = " + reference.hashCode());
    System.out.println("Reference.i = " + reference.i);
    testIsChange(reference);

    System.out.println("Reference = " + reference);
    System.out.println("Reference.hashcode = " + reference.hashCode());
    System.out.println("Reference.i = " + reference.i);   
        }
        
        public static void testIsChange (Reference reference){
    reference.i = 1;
        }
        
    }class Reference{
    int i = 0;
    }
    /*
     
    Reference = Reference@6b97fd
    Reference.hashcode = 7051261
    Reference.i = 0
    Reference = Reference@6b97fd
    Reference.hashcode = 7051261
    Reference.i = 1
    */
      

  2.   

    http://p-x1984.iteye.com/blog/380981
      

  3.   

    不用String除外,Java中任何类型,改变形参对外面都没有影响。当然,分不清引用和对象的可能会有其他结论。
      

  4.   

    不懂java ,,貌似上面一群人都没说对
     Reference reference = new Reference();
    肯定是传递类似于指针的东西,在方法里改变其值 出了方法后 值还是被改变的
    如果你传递的是值类型的话,是要在方法里复制一个一样的对象,诸如int double之类的类型。
    当方法结束后,这个对象也就消失了,所以改变是不受影响的!
      

  5.   

    Java和c的传参模型是一样的。楼主说的是改变形参
    void func(Reference ref){}
    什么叫改变形参? ref = ……
      

  6.   

    改变形参的指向,不影响方法外的实参
    A a = aaa;
    change(a);void change(A a) {
        a = bbb; //这样叫改变形参的指向
    }改变形参的属性,影响方法外的实参
    A a = aaa;
    a.b = bbb;
    change(a);void change(A a) {
        a.b = ccc; //这样叫改变形参的属性,直接改变或者通过方法改变是一样的
    }