public static void main(String[] args) {
Point point = new Point();
System.out.println("x:"+point.x+",y:"+point.y);//打印x:0,y:0
ParamProblem paramProblem = new ParamProblem();
//此处传递是实参
paramProblem.changePoint(point);
System.out.println("x:"+point.x+",y:"+point.y);//打印x:3,y:4
}
//此处传递是形参
public void changePoint(Point point) {
point.x = 3;
point.y = 4;
}
}[/code]
[ 本帖最后由 杨志罡 于 2011-07-29 00:01 编辑 ]作者: 崔虎 时间: 2011-7-28 08:59
去看看,这个帖子吧:《方法调用》9 楼。作者: 詹季春 时间: 2011-7-28 11:04
我们用程序和画图展示引用类型的参数传递---值传递[code=java]package cn.itcast.heima
public class TestReferenceTransfer
{
public static void swap(DataWrap dw)
{
//下面三行代码实现dw的a、b属性值交换。
//定义一个临时变量来保存dw对象的a属性的值
int tmp = dw.a;
//把dw对象的b属性值赋给a属性
dw.a = dw.b;
//把临时变量tmp的值赋给dw对象的a属性
dw.b = tmp;
System.out.println("swap方法里,a属性的值是" + dw.a + ";b的值是" + dw.b);
//把dw直接赋为null,让它不再指向任何有效地址。
dw = null;
}
public static void main(String[] args)
{
DataWrap dw = new DataWrap();
dw.a = 6;
dw.b = 9;
swap(dw);
System.out.println("交换结束后,a属性的值是" + dw.a + ";b属性的值是" + dw.b);
}
}[/code]其中的DataWap类为:[code=java]public class DataWap
{
public int a ;
public int b ;
}[/code]执行上面的程序可以看到:[code=java]swap方法里,a属性的值是9;b的值是6
交换结束后,a属性的值是9;b属性的值是6[/code]它的传递机制还是值传递,因为传过去的是一个引用