public class Sales {
public static void main(String[] args){
Sales sl=new Sales();
sl.amethod();
System.out.println();
}
public void amethod(){
int i=99;
V v=new V();
v.i=30;
another(v,i);
System.out.println(v.i);
}
public void another(V v,int i){
i=0;
v.i=20;
V v2=new V();
v=v2;
System.out.println(v.i);
System.out.println(i);
}
}
为什么输出是10 0 20呢?
为什么在main函数里面输出v.i是20?v不是在another里面被修改为指向v2了吗?
java
这是参数传递的问题啊,只要记住一个"java在参数都是用的值传递(包括数值与引用值)"比如:
……
public void another(V v,int i){
i=0;
v.i=20;
V v2=new V();
v=v2;
System.out.println(v.i);
System.out.println(i);
}
……
上面这段 参数v 与i 传过来 都是引用值
修改方法体中的v的值 不会影响原v的值。
public static void main(String[] args){
Sales sl=new Sales();
sl.amethod();
Sales s2=new Sales();
s2.amethod1();
}
public void amethod(){
int i=99;
V v=new V();
v.i=30;
another(v,i);
System.out.println(v);
System.out.println(v.i);
}
public void another(V v,int i){
i=0;
v.i=20;
V v2=new V();
v=v2;
System.out.println(v);
System.out.println(v2);
System.out.println(v.i);
System.out.println(i);
}
运行结果:
dao04.V@16caf43
dao04.V@16caf43
10
0
dao04.V@66848c
20
形参的问题, public void another(V v,int i)中的v是局部变量,你并没有将值赋给v
如果你这样:
main中:v=another(v,i);
public V another(V v,int i){
i=0;
v.i=20;
V v2=new V();
v=v2;
return v;