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看详细的值变化。