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

详解java中给方法传递参数的两种方式:按值传递,引用传递

2014-05-22 22:24 771 查看
第一种:按值传递(call by value)是将要传递的参数的值 传递给被调用函数,被调用函数通过创建一份新的内存拷贝来存储传递的参数。然后在内存拷贝上进行数值操作,这样不会改变原始参数的值。例子如下:

public class CallByValue
{
public static void main(String[] args)
{
int num=6;
System.out.println("ahead of call num="+num);
CallByValue callbyvalue=new CallByValue();
callbyvalue.changeNum(num);
System.out.println("after call num="+num);
}
public void changeNum(int num)
{
num+=5;
System.out.println("in changeNum call of the num="+num);
}
}


运行结果:

ahead of call num=6

in ChangeNum call of the num=11

after call num=6

在changeNum中操作的被传递参数的内存拷贝,改变的只是内存拷贝中的num的值。

第二种:引用传递:是将参数的引用传递给被调用方法,被调用方法通过传递的引用的值获取其指向的内存空间,直接在原始空间上进行操作。代码如下:

public class Test
{
public static void main(String[] args)
{
CallByRef cbf=new CallByRef(10,20);
System.out.println(cbf.a+","+cbf.b);
CallByRef.change(cbf);
System.out.println(cbf.a+","+cbf.b);

}
}
class CallByRef
{
int a,b;
CallByRef(int a,int b)
{
this.a=a;
this.b=b;
}
public static void change(CallByRef c)
{
c.a=30;
c.b=50;
System.out.println(c.a+","+c.b);
}
}


运行结果:

10,20

30,50

30,50
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐