- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
《[Practical.Java].(美)海格尔.文字版》.pdf
开 发 大 师 系 列
PracticalJava Addison
Wesley
Programming Language Guide
Java
Java
JJaavvaa
PracticalJava
中文版
[美]Peter Haggar 著
侯捷 刘永丹 译
出自第一线Java编程专家之手
68个改善代码的重要主题
所有示例和方案均有详尽解说
中国电力出版社
目录
Contents
实践:实际履行,尤指艺术、科学或技术领域;与理论遥相对应。
1
1
11 一般技术
1 byvalue byreference
1 byvalue byreference
实践11:参数以bbyyvvaalluuee方式而非bbyyrreeffeerreennccee方式传递
一个普遍存在的误解是:java中的参数以byreference方式传递。这不是真
的,参数其实是以byvalue方式传递。这个误解源于[所有javaobjects都是
objectsreferences]事实(关于objectreferences 的详细信息,请见实践8)。
如果你未能准确理解其中奥妙,则可能导致一些料想不到的后果。举个例
子:
这段代码在//2外建立了一个point对象并设初值为(0,0),接着将其值赋
予objectreference变量p。然后对基本型别inti赋予数值10。//3调用static
modifyPoint(),传入 p和i。modifyPoin(t )对第一个参数pt调用了setLocation
(),将其坐标改为(5,5)。然后将第二个参数 j赋值为15。当modifyPoint
()返回的时候,main()打印出p和i的值。这段代码的输出为何?为什么?
程序输出如下:
这显示,modifyPoint()改变了//2所建立的Point对象,却没有改变inti。
在main()之中,i 被赋值为10。由于参数通过byvalue方式传递,所以
modifyPoin(t )收到i的一个副本,然后它将这个副本改为15并返回。main()
内的原值i并没有受到影响。
对比这下,你或许认为//2 建立的point 对象也没有被modifyPoint()修改。
毕竟java是通过by value方式传递参数。于是乎,当调用modifyPoint()
并传入//2所建立的point对象时,就会产生一个复件(copy)配合modifyPoint
()工作。modifyPoint()之中对于point对象所做的修改不会反映到main
()中,因为它们是两个不同的对象嘛。对不对?错!
事实上modifyPoint()是与在[point对象的reference的复件]打交道,而不
是与[Point 对象的复件]打交道。记住,p 是个object reference,并且Java
以by value 方式传递参数。更明确
您可能关注的文档
- 《The Third Level《第三阶》》.doc
- 《The Three Little Pigs - level 2》.pdf
- 《The trend of looking for a job》.pptx
- 《The Uncompromising Leader》.pdf
- 《The Waste Land by T. S》.pdf
- 《the waste land》.doc
- 《The Winchester job interview theory》.pdf
- 《The Wise Leader(HBR)》.pdf
- 《The-Presentation-Secrets-of-Steve-Jobs》.pdf
- 《Theme Gallery Power Template-business light ani》.ppt
- 洋葱销售SOP流程及关键动作相关知识测试试卷.docx
- 深度解析《GBT 43841-2024内蒙古绒山羊》.pptx
- 电气设备运维及机械部件相关知识测试试卷.docx
- 深度解析《GBT 43843-2024网络协同制造平台数据服务要求》.pptx
- 思维倾向与开放性自我评估试卷.docx
- 危险化学品企业特殊作业安全相关知识考试试卷.docx
- 深度解析《GBT 43844-2024IPv6地址分配和编码规则 接口标识符》.pptx
- 智慧教学整体解决方案(1).doc
- 多重耐药菌感染防治知识及预防措施试卷.docx
- 深度解析《GBT 43845-2024基于扫描氮-空位探针的微弱静磁场成像测量方法》.pptx
文档评论(0)