public class Example{
String str=new String("tarena");
char[]ch={'a','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
//引用类型变量,传递的是地址,属于引用传递。
str="test ok";
ch[0]='g';
}
}
Java中只有值传递和副本传递
当运行change时,成员变量的str和ch引用地址被复制一份副本,当作change的形式参数传入,此时的原本和副本在指向同一个地址,当change的str="test ok" 时,在常量池中会创建一个对象常量test ok,这时副本的地址指向test ok,原本还是指向tarena,方法结束形参死亡,副本随之消失,输出的str还是tarena,但ch的原本和副本一直指向同一个地址,副本修改了ch[0]='g',原本也会随之改变,方法结束,副本死亡,但是原本ch的值被修改了,所以输出为{'g','b','c'}



