本帖最后由 黎志勇 于 2014-5-30 11:07 编辑
show()方法里面的参数s1,s2只是引用了main()方法中的变量s1,s2的值,而不是互为等同。
首先看一下执行show()方法的过程,大可把show()方法改成,这样不容易混淆;
- public static void show(String strA,String strB)
- {
- strB.replace('a','o');
- strA=strB;
- }
复制代码
这个跟你写的是一样的,
执行show()方法是,strA、strB分别获得main()中s1,s2的值,其引用值分别为"hello","java",然后可以无视s1,s2了,
之后 strB.replace('a','o');
strB会断开对"java"这个字符串的引用,而另外引用执行替换后得到的新字符串"jovo",
然后 strA=strB;
strA 和 strB 会共同引用字符串 "jovo" ,
整个过程 main()方法中的 s1,s2 的引用值都没有改变,他两就是打酱油的,所以输出"hello java"。
说到底,就是方法内定义的局部变量跟方法外定义的变量,不是一回事。 |