a,b are local vars inside temp(String a,String b), so change references of them will not change vars outside temp().   

解决方案 »

  1.   

    to caiyi0903(willpower):
      画什么图?画UML图吗?
    to wobelisk():
      What's the different between local vars and vars in temp()?And I change the entities of the references,not the references in temp.
      

  2.   

    在JAVA中请记住:
       基本类型是传值;有值拷贝。
       其它是都是传引用(可以看做是传地址了!),当然要有引用的拷贝了。
      

  3.   

    我来解释一下。
    传引用的问题就不用再提了,是肯定的。关键在于Java的内存模型。粗略地说,对于temp方法的两个参数,系统会在堆栈中为之建立相应的拷贝,本地句柄。这时每个对象有两个引用,外部句柄与本地句柄。而temp方法中调换的是本地句柄对两个对象的引用,并不影响外部句柄对两个对象的引用。
      

  4.   

    可以这样理解:
      假设Main()中 a,b 分别被 aa,bb所代替。
      当aa,bb的对象引用通过temp(aa,bb)后,temp函数内的变量:a 和aa有相同的引用,b和bb有相同的引用,此时,a和b的引用互换了,但aa和bb的并没有发生变化。
      
       也就是说,public static void temp(String a,String b)  函数中的a,b 是重新定义的两个变量。而不在是main中的 a和b。
      

  5.   

    在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。但是String对象类型除外,每次都会new出一个新的String对象,赋值的时候是数值复制,注意涵义:String str1 = new String("A");  //注意这里不是String str1 = "A";
      

  6.   

    java只有传值调用,没有所谓的传引用的方式!!!!!!!!!!
    所以,你定义如此之方法是不能实现两个变量的内容交换的,如果一定要实现交换,可以用数组: private static void swap(short x[], int a, int b) {
    short t = x[a];
    x[a] = x[b];
    x[b] = t;
             }
    另外:java对象通过方法(函数)的参数传入,在方法内对其状态的改变是可以传回到调用出的!所以你在方法(函数)内对对象进行属性修改之类的操作是有效的!
      

  7.   

    to playboyxp(learning):
    如何修改指向的内容?
    ---------------------------------------------------------------------------------
    to  Shrewdcat(丧邦&灵猫&潇):
    “也就是说,public static void temp(String a,String b)  函数中的a,b 是重新定义的两个变量。而不在是main中的 a和b。”但是他们的指向都是相同的对象,temp()中的a和main()中的a都指向heap中的"Hello"啊。
    String str1 = new String("A");和String str1="A";有什么区别,都是初始化啊!
      

  8.   

    http://www.csdn.net/develop/Read_Article.asp?Id=22025
      

  9.   

    我不同意网友zhangxf(反我恕)关于传引用称谓的观点,另外我觉得“在方法内对其状态的改变是可以传回到调用出的“这句也值得商榷。我的看法:
    1. 传引用不是可有可无的称谓,实际上我觉得它很形象。
    2. 状态的改变并不是传回去的,而是两个句柄对同一个对象进行引用,任何一个句柄都可以调用其可以改变对象状态的方法。观察对象状态的改变也是同样的。正如caiyi0903(willpower) 所说,一个内存模型图就可以解释。
    可以在Java2从入门到精通或Java2编程详解中找到这个模型图,前年看的,到底是哪一本记不清了。lxw1983 (oner) 可以参考一下。