关于String 传址传值?
java对对象的传递是传址,对基本类型的传递是传值有下面一个测试程序
public class Test{
public void ChangeString(String s){
s = s + " Changed ";
}
public static void main(String args[]){
Test test = new Test();
String name = "name ";
System.out.println( "before : "+name);
test.ChangeString(name);
System.out.println( "after : "+name);
}
}
按照对象传址理解,调用方法以后name应该发生变化,而实际上却没有,不知道谁能解释一下! --------------------编程问答-------------------- 两个问题:
1、Java没有传址的概念,只有传值,对象传递的也是引用的值;不要把C的概念用在Java上,会彻底混乱的。
2、String是不可变的。
如果你想得到你期望的那种效果,换一个对象,把String换成 StringBuilder:
public void ChangeString(StringBuilder s){
s.append(" Changed ");
}
这样可以看到效果。
如果你企图这样做:
public void ChangeString(StringBuilder s){
s = new StringBuilder(s + " Changed ");
}
一样是失败的。
补充:Java , Java EE