A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林兴才 中级黑马   /  2015-6-18 15:19  /  234 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

混淆值传递和引用传递
  这是一个不太容易发现的错误。因为,当你看代码的时候,你会十分确定这是一个引用传递,而它实际上却是一个值传递。Java这两者都会使用,所以你要理解你什么时候需要值传递,什么时候需要引用传递。当你要传递一个简单的数据类型到一个函数中,比如,char、int、float或者double,你是在传递一个值。这个意味着这种数据类型的被复制了一个拷贝,是这个拷贝被传递到了函数中。如果这个函数去修改这个值,仅仅是这个值的拷贝被修改了。这个函数结束以后,将会返回到控制调用函数去,这时候那个“真正的”值没有受到影响,没有任何改变被存储。
  如果你想修改一个简单的数据类型,可以将这个数据类型定位一个返回值或者将它封装到一个对象中。
  当你要传递一个java对象到一个函数中,比如,数组、向量或者是一个字符串,此时你传递的就是一个对象的引用。这里的字符串也是一个对象,而不是一个简单数据类型。这就意味这你要传递一个对象到一个函数,你就要传递这个对象的引用,而不能去复制它。任何对这个对象的成员变量的改变都会持久化,这种改变的好坏要取决于你是否是刻意而为之。
  有一点要注意,如果字符串没有包含任何方法改变它的值的时候,你最好将它作为值来传递。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马