class ValHold{
public int i = 10;
}
public class ObParm{
public void amethod(){
ValHold v = new ValHold();
another(v);
System.out.println(v.i);
}
public void another(ValHold v){
v.i = 20;
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
public static void main(String[] argv){
ObParm o = new ObParm();
o.amethod();
}
}此题的答案是10,20,为什么不是10,10呢?
public int i = 10;
}
public class ObParm{
public void amethod(){
ValHold v = new ValHold();
another(v);
System.out.println(v.i);
}
public void another(ValHold v){
v.i = 20;
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
public static void main(String[] argv){
ObParm o = new ObParm();
o.amethod();
}
}此题的答案是10,20,为什么不是10,10呢?
解决方案 »
- POI将PPT转换成图片输出
- 请问swing如何持久化??
- DatabaseMetaData 這個方式的使用疑惑
- 今天复习了一下一些简单的排序算法,贴出来给大家批评批评,顺便散一下分
- 请问java结合c语言一般应用在什么场合?能否举个例子?
- 关于局部变量与成员变量的一个问题
- 请推荐一些好的介绍Java高级特性的书!
- Sun怪怪的,为什么把1.5改叫5.0,出了声明可安装完的目录和版本显示确实1.5,有些意思
- 在安装JAVA2 SDK后,如何解决path路径问题?
- 请问有没有jdbc存取中文的例了?
- 我是新手请问eclipse中debug怎么操作????
- 请问各位高手,++i什么时候自增1,什么时候自增2啊?
public int i = 10;
}
public class ObParm{
public void amethod(){
ValHold v = new ValHold();
another(v);
System.out.println(v.i);//输出被修改的属性20
}
public void another(ValHold v){//v指向传递过来的对象(实参)
v.i = 20;//修改实参对象的属性
ValHold vh = new ValHold();
v =vh;//v指向新定义的对象
System.out.println(v.i);//输出默认值10
}
public static void main(String[] argv){
ObParm o = new ObParm();
o.amethod();
}
v.i = 20;
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
由于another方法传递的是个对象,所以一旦改变了对象的类成员值,就改变了对象内部的值。
ValHold vh = new ValHold();
v =vh;
此次在引用时,返回的就是改变后的值。
ValHold v = new ValHold();与
ValHold vh = new ValHold();v =vh;
中的v分别是两个不同的对象嘛?
我总觉得应该输出是10,10,因为两次v都是指向一个new VaHold()嘛?
v.i = 20;//如果你那样理解的话,那这里修改的数据又谁的呢?
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
可惜我没有分给了,不好意思哈。
下次多给你送分啊?