日期:2014-05-20  浏览次数:20654 次

关于String 类 的问题
首先代码
String a="abc";
a="c";
System.out.println(a);
打印出来的是c;
解释是:String虽然是final的但是a变的只是引用
但是
我定义了一个函数
public static void strChang(String str){
str="ddddd";
}
然后
String a="abc";
a="c";
strChang(a)
System.out.println(a);
怎么打印的还是c呢:
怎么解释啊

------解决方案--------------------
第二个可以这么描述
a-> "abc"
a-> "c"
str ->"dddd"
打印a
所以a还是c
------解决方案--------------------
基本类型传的是值,对象类型传的是引用,因为String是对象类型,传过去是a的引用,当a在函数里被改变值得时候,注意,其实只是把a的引用改变了,将a指向了"dddd",而之前的“c”这个值还在原来的地方没改变,所以回到原来的函数后,原来a的值还是没变化。