Java中的方法参数传递方式
2014-12-09 22:56
302 查看
最近在系统学习Core Java,Java中的数据类型分为两种,第一种是基本数据类型(数字型和布尔型),第二种是类类型(即对象),起初,我以为第一种类型的参数是按值传递,第二种是按引用传递,但在学习Core Java的过程中,我发现这是错误的,先抛出最终结论:在Java中,所有的方法参数都是按值传递的!!!下面来进行解释。
第一种类型的参数是按值调用很好理解,主要是要说明第二种类型的参数也是按值调用的,看下面的一段程序:
如果是按引用传递,那么这个方法就应该能够实现数据交换(a引用Rose,b引用Jack):
但实际上,swap方法并没有改变a和b的引用,swap参数的x和y初始化为a和b的引用拷贝,这个方法交换的是x和y的引用,最终,白费力气,方法结束的时候x和y被丢弃了,a和b仍然引用之前引用的对象。如下图所示:
这个过程说明:Java中,对对象采用的不是按引用传递,实际上,对象引用进行的是值传递。
第一种类型的参数是按值调用很好理解,主要是要说明第二种类型的参数也是按值调用的,看下面的一段程序:
public static void swap(A x, A y) { A temp = x; x = y; y = temp; }
如果是按引用传递,那么这个方法就应该能够实现数据交换(a引用Rose,b引用Jack):
A a = new A("Jack"); A b = new A("Rose"); swap(a, b);
但实际上,swap方法并没有改变a和b的引用,swap参数的x和y初始化为a和b的引用拷贝,这个方法交换的是x和y的引用,最终,白费力气,方法结束的时候x和y被丢弃了,a和b仍然引用之前引用的对象。如下图所示:
这个过程说明:Java中,对对象采用的不是按引用传递,实际上,对象引用进行的是值传递。
相关文章推荐
- Java方法中的参数传递方式
- 《Java中方法的参数传递方式只有一种:值传递》
- 新手容易混乱的String+和StringBuffer,以及Java的方法参数传递方式
- java程序设计语言将参数传递方法的方式
- Java学习(八)方法参数传递方式
- Java方法参数传递方式
- Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)
- 新手容易混乱的String+和StringBuffer,以及Java的方法参数传递方式。
- 关于"Java中方法参数的传递方式"的探讨
- Java方法参数的传递方式
- Java方法参数传递方式总结
- Java 方法中参数的传递方式
- Java 方法参数传递方式
- java方法参数传递方式--按值传递、引用传递
- 【转】java方法参数传递方式--按值传递、引用传递
- 关于"Java中方法参数的传递方式"的探讨
- java方法参数传递方式
- 新手容易混乱的String+和StringBuffer,以及Java的方法参数传递方式。
- 终极解释: java方法传递参数的方式
- java方法调用中参数传递的方式