小白求解JAVA考试题

来源:百度知道 编辑:UC知道 时间:2024/05/29 16:23:25
public static void main(String args[]){
String str=new String("World");
char ch{}={'H','e','l','l','o'};
change(str,ch);
System.out.println(str + "and" + ch);
}
public static void change(String str,char ch[]){
str="Changed";
ch[0]='C';
}
}
的答案为什么是World and Cello,不是Changed and Cello或者World and Hello呢?迷惑

方法调用是值传递,
void change(String str,char ch[]){ 这句的str是字符串,虽然在方法体里已经改成Changed了,但没有return语句,相当于局部变量,方法执行完就消失了,而ch[]相当于传的是数组的首地址,完全不需要return语句就可以改。

呵呵 这是考你对值传递和引用传递的理解。
首先 String是个类,也是个比较特殊的类,在方法中传入的是它的一份拷贝,在方法中对它的拷贝的修改不会影响原来的值.
其次 char ch[],是个数组,数组属于引用类型,在方法中传递的是它的引用,既然是引用,那么在方法中对它的修改,必然会影响到原来的值.

所以最后输出的是World and Cello

因为ch[0]='C';把ch字符数组的第一个H赋值成C了.明白没