读书人

Java函数参数传递形式详解

发布时间: 2012-10-11 10:16:10 作者: rapoo

Java函数参数传递方式详解
在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式:
A.是按值传递的?
B.按引用传递的?
C.部分按值部分按引用?
此处暂不宣布正确答案,我们通过一个简单的例子让大家自己找答案:
1.先定义一个类型Value

newValue{Value_ref2 = value_ref1; // 按值传入引用value_ref1,得到value_ref1的副本value_obj2 = new Value();// value_obj2被创建、初始化在“堆“中value_ref2 -> value_obj2;// value_ref2 指向value_obj2value_ref2 ->value_obj2.setValue(“xxx”);// value_obj2 的value被修改printValueObj2();// 此处打印的是obj2的值}modifyValue{Value_ref2 = value_ref1; // 按值传入引用value_ref1,得到value_ref1的副本value_ref2 ->value_obj1.setValue(“xxx”);// value_obj1 的value被修改printValueObj1();// 此处打印的是obj1的值}

够清楚了吧!value1_ref1在作为参数传入函数的时候,首先被复制了一份副本value1_ref2供函数域使用,此时这两个ref都是指向同一个value_obj; newObject函数中的代码[ value = new Value(); ] 其实是将value1_ref1指向了一个新的对象value_obj2;在这之后的set操作都是对新对象的操作;modifyValue函数是通过set方法直接操作value_obj1,这是跟newValue函数的不同之处。

如果还是不太明白,请先确定是否已经理解 “引用”、“对象”的概念,可以Google、百度相应的文章学习一下:)

读书人网 >编程

热点推荐