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

java代码
public static void main(String[] args) {
String str = "world";
char[] ch = {'H','e','l','l','o'};
change(str,ch);
System.out.print(str+" and ");
System.out.println(ch);
}

private static void change(String str, char[] ch) {
str="change";
ch[0]='C';
}
对于上面的代码,哪位大侠能详细的给我说一下str为什么不变,但ch[0]却变了呢??????

------解决方案--------------------
这个问题前几天我好想刚回答过。不知道那个帖子是不是你发的。。
原因就是change(String str, char[] ch) 
这个方法里面,str传的是一个值,意思就是你把这个值赋给一个新的对象,这样这个新对象怎么改都不会影响到原对象。。
但是ch传入的是一个对象,把这个对象的地址值传给一个新的对象,这样的话新对象的变化肯定对原对象造成相应的修改。说白了,这两个对象其实就是一个对象,因为有共同的地址值,只不过名称不同而已。。