您的位置:首页 > 编程语言 > Java开发

一道scjp题,关于java 变量引用的,知道为什么输出10,20吗?

2007-06-07 08:20 435 查看
源代码

主程序

public class Test1 {
public void amethod(){

ValHold v=new ValHold();
another(v);
System.out.println(v.i);
}

public void another(ValHold v) {
// TODO 自动生成方法存根
v.i=20;
ValHold vh=new ValHold();
v=vh;
System.out.println(v.i);
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
Test1 t=new Test1();
t.amethod();
}

}

辅助类;

package com.hf.scjp.reference.test1;

public class ValHold {
public int i=10;
}

-----------------------20060608--------------------------------------------------

当一个引用变量作为参数传递给一个方法时,在这个方法内部可以改变变量的值,即改变引用指向的对象;

但是当方法调用结束后,该变量恢复原来的值,即变量仍然指向原来的对象。即another调用结束时,v又回复到

ValHold v=new ValHold();时指向的地址空间了。

但是当在方法内部改变了引用指向的对象的数据:v.i=20;
那么当调用方法结束之后(another),尽管引用仍然指向原来的对象,但这个对象的属性已经被改变了,所以调用方法结束后,v.i已经变成了20.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐