Java入口函数中调用静态方法传入参数的问题?

public class Main {

public static void main(String [] args) {

    Main main = new Main();
    String str = "abc" ;
    char[] array = {'a','b','c'};
    change(str,array);
    System.out.println(str + "  " + String.valueOf(array));

}

public static void change(String str , char[] array) {
    str = "cba";
    array[0] = 'g';
}

}

 运行结构为:abc  gbc,不知道这是为啥?

change 传递 str 是以值得方式传递的,因此修改str 只改变了栈中的临时值,不能改变原值。 array 是以引用传递的,因此 能修改它的值。

输出的str是main()方法里的str.你搜下跨函数使用内存

    在方法里面对引用类型变量进行操作不会改变原来的引用,因此abc没变,但是对引用变量属性的操作会改变原有引用的属性,所以数组的‘a’变成了‘g’。

可以参考下http://blog.csdn.net/sinat_22013331/article/details/51150358

array改变的是Main方法里的str;
你可以通过Debug看详细的值变化。