String作为引用类型,传递的是引用,也就是地址。
可以理解为值,只是这个值比较特殊,是字符串的地址
可以
String 为引用类型,作为实参传递的是引用的一份复制。main 方法中传递给 change 方法的第一个参数可以看作是 ex.str 的一份复制,姑且叫它ex.str_2,ex.str 和 ex.str_2 一样,都指向 "good" 这个 String 对象,在 change 方法中,ex.str_2 被修改,指向了新的 String 对象 "test ok",而 ex.str 并未被改变。
实参传给行参时,实际上只是给形参在堆栈上分配一个引用,这个引用指向了实参也就指向了实参(引用)所指向的实际对象。str="test ok",你不能让实际对象指向一个实际对象,所以形参str不再指向实参,而是指向了"test ok"这个实际对象。而ch[0]=又不一样,ch引用本身不能访问元素,所以就通过形参ch指向的实参指向的实际对象访问元素并改变,此时在main方法中再次通过引用访问对象时,形参ch对应的实参对应的实际对象发生了改变。