class Val{public int i = 10; } //成员变量i
public class PassByValue{
public static void main(String argv[]) {
PassByValue o = new PassByValue();
o.aMethod();
}
public void aMethod(){
int i = 99;//局部变量i
Val v = new Val();
v.i=30; //成员变量i
another(v, i); // 30, 99
System.out.println(v.i);
}
public void another(Val v,int i){//30,99值传递
v.i = 20;
Val vh = new Val();
v = vh;
System.out.print(v.i+" "+i+" ");//10 99
}
}
输出为 10 99 2010和99能理解,但20是怎么出来的我就是搞不懂,郁闷!
public class PassByValue{
public static void main(String argv[]) {
PassByValue o = new PassByValue();
o.aMethod();
}
public void aMethod(){
int i = 99;//局部变量i
Val v = new Val();
v.i=30; //成员变量i
another(v, i); // 30, 99
System.out.println(v.i);
}
public void another(Val v,int i){//30,99值传递
v.i = 20;
Val vh = new Val();
v = vh;
System.out.print(v.i+" "+i+" ");//10 99
}
}
输出为 10 99 2010和99能理解,但20是怎么出来的我就是搞不懂,郁闷!
public class PassByValue{
public static void main(String argv[]) {
PassByValue o = new PassByValue();
o.aMethod();
}
public void aMethod(){
int i = 99;//局部变量i
Val v = new Val();//v.i=10
v.i=30; //成员变量i
another(v, i); // v.i=30, 99
System.out.println(v.i);//所以这里不是输出10而是20
}
public void another(Val v,int i){//30,99值传递
v.i = 20;//v.i=20
Val vh = new Val();
v = vh;//v.i=10;注意这里已经断开了another方法中局部变量v与aMethod局部变量的关系,所以即这里的v与aMethod的v不再是同一个对象引用了。
System.out.print(v.i+" "+i+" ");//10 99
}
}