ex.change(ex.str,ex.ch);
这句话调用之后,str这个字符串,传入之后,接收的时候,实际上重新分配一个地址,就是
change中的str,在这个方法中,只修改了方法中的局部变量。
而ch[]这个数组传递的是引用
他们指的都是一个地址,所以修改的时候,修改的是全局的那个。
str="test ok";
这个str是 change(String str,char ch[]){这个str,跟 String str=new String("good");
这里的str完全没关系,所以当然是输出good
很简单,因为ex.change(ex.str,ex.ch);方法里,改变了str字串的值,而不是改变了ex.str的指。
所以ex.str的值没变。
public void change(String str,char ch[])方法中的str="test ok"修改成this.str="test ok"
全局变量str和change中参数str所处内存地址不同,所以修改change中str后并不能修改掉全局变量str的值,除非你明确指明在change方法中修改全局变量str的值,则用 this关键字。
public void change(String str,char ch[]){
this.str = "test ok" //或 str = "test ok" ; this.str = str ;
ch[0] = 'g'
}