的Java通過根據值,這意味着你把作爲參數對象的值傳遞,而不是對象本身,因此
val=11;
changeInt(val);
不準確同樣的事情,
int val=11;
int val2=val
changeInt(val2);
int是一種原始的,原始數據沒有「包裝」的值,你可以嘗試使用Integer類,或者使自己的類存儲一個整數,然後更改THA t類整數值。如果設置正確,對象的實例有時會傳遞ByReference。這裏有一個例子
MyStringClass.java
public class MyStringClass{
private String string = null;
public MyStringClass(String s){
string = s;
}
public String getValue(){
return string;
}
public void setValue(String s){
string = s;
}
}
,然後運作
public static void addTo(String s){
s += " world";
}
public static void addTo(MyStringClass s){
s.setValue(s.getValue() + " world");
}
public static void main(String[] args){
String s = "hello";
MyStringClass s1 = new MyStringClass("hello");
addTo(s);
addTo(s1);
System.out.println(s);//hello
System.out.println(s1);//hello world
}
我會想知道爲什麼你需要改變的價值,而不是僅僅恢復了嗎?是不是更容易?
此代碼甚至不會編譯 – stacker 2011-12-16 21:33:52
只是一個片段..不完整..需要問這裏的問題.. – sum2000 2011-12-16 21:35:44
@stacker我不認爲代碼編譯需要問一個問題 – Andy 2011-12-16 21:52:33