【菜鸟求助】以下代码的输出结果。。。
public class AboutStr {
String str=new String("good");
char[] ch={'a','b','c'};
public static void main(String[] args) {
AboutStr ex=new AboutStr();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.println(ex.ch);
}
public void change(String str,char[] ch1){
str="text ok";
ch1[0]='g';
}
}
为什么输出结果是 good and gbc 呢? 菜鸟
[解决办法]
以上可能解释的不够清楚,java参数传递都是值传递,只是基本数据类型传值,非基本类型传地址,基本类型可以直接修改其值,而非基本类型相当于是拷贝,只是和源对象指向了同一地址,他如果直接修改自己,比如:
public static void main(String[] args) throws IOException {
char[]test = {'a','b','c'};
exchange(test);
System.out.println(test);
}
private static void exchange(char[] test){
test = null;
}