问题:
众所周知,如果传递的是一个引用类型,传递的是引用地址,而不是对象本身,所以方法对这个引用修改,会影响原值。
String是一个引用类型,但是将它传递给方法后,原值并没有受到影响。
public class Test02 {
public static void main(String[] args) {
String str = "abc";
change(str);
System.out.println(str);
}
public static void change(String str) {
str = "xyz";
System.out.println(str);
}
}
原因:
String虽然是引用类型,但是String本身不能被修改,如果修改的话,会新开辟一段空间来存储新值,虽然不会影响之前的值。
验证:
StringBuilder支持在本身的基础上修改。
public class Test {
public static void main(String[] args) {
StringBuilder str = new StringBuilder("abc");
change(str);
System.out.println(str);
}
public static void change(StringBuilder str){
str.append("xyz");
System.out.println(str);
}
}