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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 温立华 中级黑马   /  2013-3-18 21:35  /  1432 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 温立华 于 2013-3-19 15:38 编辑

到底 Java 是如何传递参数的?是by value或by reference

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 好吧,加油~

查看全部评分

6 个回复

倒序浏览
基本类型(如int, float, char等)是by value;
而“对象”(Object)则是by value of reference to object。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]
根据以上 Java规格文件的说法, 所有参数应该都是传值的(by value)。但实际上, 实际经验却告诉我们所有 Java 的对象都是传址的(by reference)。因此我们可以这样解释: 基本类型(如int, float, char等)是by value,而所谓“对象”(Object)则是by value of reference to object。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
当你给方法传递一个基本数据类型时,它是按值传递的。当你给方法传递一个对象时,对象是通过引用传递的。
因为当你创建一个类类型的变量(对象)时,就创建了一个类的引用一个指向该类的地址。在传递的参数为对象时,这个参数中放的内容实际上是对向所在的地址。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
这主要分两种
一种是基本类型是by value;
另一种是对象(Object)它是by value of reference to object

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
值传递!
回复 使用道具 举报
若还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马