读书人

java的基础知识求教解决办法

发布时间: 2013-01-22 10:23:54 作者: rapoo

java的基础知识求教


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;


}
那么结果就是:10 0 10

读书人网 >J2SE开发

热点推荐