的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