String 到底是引用传递还是值传递
Public class Test1 {
Public static void changeStr(String str){
str="welcome";
}
Public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}为什么输出是1234,是因为成员变量的原因?
Public class Test1 {
Public static void changeStr(String str){
str="welcome";
}
Public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}为什么输出是1234,是因为成员变量的原因?
第二部:传到方法changeStr中时,形参str指向第一步str的地址
第三步:改变了形参的地址指向"welcome"
第四步:虽然第三版改变了形参的地址但没有改变第一步的str的地址所以输出还是“1234”
虽然将str的引用值传递给方法changeStr的参数str , 但是改变changeStr方法中的str的值,也不影响main方法中的str的值。
StringBuffer 就打印 welcome了区别在于changeStr中如果是String(不可变的)的话会指向新的地址,而StringBuffer(内容可变的)就是该原始地址的内容
http://blog.sina.com.cn/s/blog_4b622a8e0100c1bo.html
虽然有点长,但仔细看下吧。 详细讲解了StringBuffer作为参数的事。
http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html