小林今天又碰到了一道题,搞明白了跟大家分享一下
下面请看
public class Test{
public static void main(String[] args){
String str=new String('good');
char[] ch={'a','b','c'};
Test ex=new Test();
ex.change(str,ch);
System.out.println(str+"and");
System.out.println(ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
结果输出了
goodandgbc
这个原来是因为在调用change方法时,str和ch传递的都是引用,在方法中修改了ch指向对象的内容,由于形参与实参指向相同的对象,因此通过形参对对象内容的修改对实参是可见的。对于str来说,修改的是引用本身,也就是修改的是引用的值,而不是修改引用指向的内容,对引用本身的修改对实参是不可见的。