- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
值传递和引用传递
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
Java:按值传递还是按引用传递详细解说
前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料时,经常看到有人说Java只有值传递,但有人说既有值传递,也有引用传递,对于两个观点个人觉得应该是站的角度不同而得出两个不同的说法,其实两个说法其中的原理是一样的,只要咱们懂得其中的原理,那么至于叫什么也就无所谓了,下面是我在网上看到的一个帖子,解释的感觉挺全面,就转过来,以供以后学习参考:
? ? ? ?
1:按值传递是什么
指的是在方法调用时,传递的参数是按值的拷贝传递。示例如下:
[java]?view plain?copy
public?class?TempTest?{??
private?void?test1(int?a){??
//做点事情??
}??
public?static?void?main(String[]?args)?{??
TempTest?t?=?new?TempTest();??
int?a?=?3;??
t.test1(a);//这里传递的参数a就是按值传递??
}??
}??
按值传递重要特点:传递的是值的拷贝,也就是说传递后就互不相关了。
示例如下:
[java]?view plain?copy
public?class?TempTest?{??
private?void?test1(int?a){??
a?=?5;??
System.out.println(test1方法中的a=+a);??
}??
public?static?void?main(String[]?args)?{??
TempTest?t?=?new?TempTest();??
int?a?=?3;??
t.test1(a);//传递后,test1方法对变量值的改变不影响这里的a??
System.out.println(”main方法中的a=”+a);??
}??
}??
运行结果是:
[java]?view plain?copy
test1方法中的a=5??
main方法中的a=3??
2:按引用传递是什么
指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。
示例如下:
[java]?view plain?copy
public?class?TempTest?{??
private?void?test1(A?a){??
}??
public?static?void?main(String[]?args)?{??
TempTest?t?=?new?TempTest();??
A?a?=?new?A();??
t.test1(a);?//这里传递的参数a就是按引用传递??
}??
}??
class?A{??
public?int?age?=?0;??
}??
3:按引用传递的重要特点
传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。
示例如下:
[java]?view plain?copy
public?class?TempTest?{??
private?void?test1(A?a){??
a.age?=?20;??
System.out.println(test1方法中的age=+a.age);?//?20
}??
public?static?void?main(String[]?args)?{??
TempTest?t?=?new?TempTest();??
A?a?=?new?A();??//age=0
a.age?=?10;??
t.test1(a);??
System.out.println(”main方法中的age=”+a.age);??
}??
}??
class?A{??
public?int?age?=?0;??
}??
运行结果如下:
[java]?view plain?copy
test1方法中的age=20??
main方法中的age=20??
4:理解按引用传递的过程——内存分配示意图
您可能关注的文档
- 中国家电出口香港的环境监测及壁垒分析.ppt
- 基于x264的快速运动估计算法优化_黄春庆.pdf
- 残留溶剂测定法检验标准操作规程.doc
- 停办(关闭)矿山残留矿产资源储量登记书填表说明.doc
- 中药有害残留物限量制定指导原则.doc
- 食品中抗生素残留危害及检测方法.docx
- AFC中央级功能测试实施方案.docx
- 移动通信实验二.doc
- 第六章数据的收集和整理全章教案内部使用.doc
- 建筑结构实验简答题.docx
- GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 中国国家标准 GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 《GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs)》.pdf
- GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- 中国国家标准 GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 中国国家标准 GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 《GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样》.pdf
- 《GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯》.pdf
- 中国国家标准 GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯.pdf
文档评论(0)