网站大量收购独家精品文档,联系QQ:2885784924

《[Practical.Java].(美)海格尔.文字版》.pdf

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 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 方式传递参数。更明确

文档评论(0)

mwap + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档