Java数组的传递
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[]字符数组是地址传递,所以修改值后,原字符数组的值改变。