Java数组的传递

public class Test1{
	
	String str = new String("good");
	char[] ch = {'a','b','c'};
	
	public void change(String str, char ch[]){
		str = "test ok";
		ch[0] = 'g';
	}
	public static void main(String args[]){
		Test1 test1 = new Test1();
		test1.change(test1.str, test1.ch);
		System.out.print(test1.str + " and ");
		System.out.print(test1.ch);
	}
	
}

先看一下运行结果:

D:\a_demo_text>javac Test1.java
D:\a_demo_text>java Test1
good and gbc

最后的运行结果是 String类型的值没有改变,char[]类型的值改变了。


如果把上文中的两个打印语句改为一句:

		System.out.print(test1.str + " and " + test1.ch);

则打印为:

good and [C@525483cd

char[]打印出的并不是值,而是地址。


由此可推断,char[]字符数组是地址传递,所以修改值后,原字符数组的值改变。