详解java中给方法传递参数的两种方式:按值传递,引用传递
2014-05-22 22:24
771 查看
第一种:按值传递(call by value)是将要传递的参数的值 传递给被调用函数,被调用函数通过创建一份新的内存拷贝来存储传递的参数。然后在内存拷贝上进行数值操作,这样不会改变原始参数的值。例子如下:
运行结果:
ahead of call num=6
in ChangeNum call of the num=11
after call num=6
在changeNum中操作的被传递参数的内存拷贝,改变的只是内存拷贝中的num的值。
第二种:引用传递:是将参数的引用传递给被调用方法,被调用方法通过传递的引用的值获取其指向的内存空间,直接在原始空间上进行操作。代码如下:
运行结果:
10,20
30,50
30,50
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
相关文章推荐
- java方法参数传递方式--按值传递、引用传递
- 【转】java方法参数传递方式--按值传递、引用传递
- Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)
- java 学习 方法参数按值传递和按引用传递:
- java值传递的两种方式:值传递和引用传递
- Java函数参数传递方式详解
- Java常见笔试面试题目深度剖析系列之:Java方法参数传递详解
- c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
- Java中向方法传递的参数是引用还是值?
- Java 把对象作为参数传到一个方法里,这个是值传递还是引用传递, 为什么结果这么怪?
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 在Java中方法参数的传递,对象是传递引用
- c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
- perl中子程序中参数的两种引用(传递)方式介绍
- 参数的两种传递方式详解
- Java中的参数传递方式到底是引用传递还是值传递?
- c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
- c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
- 关于"Java中方法参数的传递方式"的探讨
- perl中子程序中参数的两种引用(传递)方式:pass by value and pass by Reference(传入引用)