有关String类的不可变性,也涉及到引用传递的问题。
代码:
public class StringTest {
String str = new String("good");
char[] ch = {'t', 'e', 's', 't'};
public void change(String str, char ch[]) {
System.out.println(this.str == str);//true
str = "nice";
ch[0] = 'b';
System.out.println(this.str == str);//false
}
public static void main(String[] args) {
StringTest st = new StringTest();
st.change(st.str, st.ch);//调用change方法
System.out.println(st.str); //good--->未改变
System.out.println(st.ch); //best--->改变
}
}
change()方法的两个参数都是引用传递的,调用change()方法,传递的是地址,所以执行方法体的语句会使内存中的值改变,但是由于String的不可变性,所以结果为str没有改变,而ch被改变了。