Java中的以下代碼有什麼區別?我無法清楚地瞭解Java中如何傳遞對象。任何人都可以解釋下面的代碼。Pass對象Java
package cc;
public class C {
public static class Value {
private String value;
public void setValue(String str) {
value=str;
}
public String getValue() {
return value;
}
}
public static void test(Value str) {
str.setValue("test");
}
public static void test2(Value str) {
str=new Value();
str.setValue("test2");
}
public static void main(String[] args) {
String m="main";
Value v=new Value();
v.setValue(m);
System.out.println(v.getValue()); // prints main fine
test(v);
System.out.println(v.getValue()); // prints 'test' fine
test2(v);
System.out.println(v.getValue()); // prints 'test' again after assigning to test2 in function why?
}
}
Java是*通過值*。通過參數'str'將'v'的引用值從'main'傳遞到'test2'中,當'str'被分配給一個新的引用時這個參數丟失了。 – oldrinb
[Java是否爲「通過引用傳遞」?](http://stackoverflow.com/questions/40480/is-java-pass-by-reference) – adatapost