一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 411|回复: 10
收起左侧

Java是parse by reference吗?

[复制链接] |试试Instant~ |关注本帖
lqlee 发表于 2015-11-20 09:37:03 | 显示全部楼层 |阅读模式

2014(4-6月) 码农类 硕士 全职@clodera - 内推 - 技术电面 |Fail在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
去年,网上有人说能内推,就去凑了把热闹。
店面的是白人大叔。
问到这个问题,Java是parse by reference 还是 parse by value.
我记得网上是有争论的。就随口说了个parse by reference。估计就没有然后了。

sanguine 发表于 2015-11-20 09:59:26 | 显示全部楼层
Java只有pass-by-value
回复 支持 1 反对 0

使用道具 举报

hpplayer 发表于 2015-11-20 10:13:06 | 显示全部楼层
pass-by-value
非要精确说就是VALUE OF REFERENCE
回复 支持 1 反对 0

使用道具 举报

水逼一枚 发表于 2015-11-20 09:40:07 | 显示全部楼层
pass by value
回复 支持 反对

使用道具 举报

leixiang5 发表于 2015-11-20 09:46:21 | 显示全部楼层
java object是pass by reference..primitive 是pass by value...1point3acres缃
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
补充内容 (2015-11-20 09:57):
饿。google了下。好像是value.
回复 支持 反对

使用道具 举报

头像被屏蔽
shqyking 发表于 2015-11-20 09:47:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

sanguine 发表于 2015-11-20 10:00:13 | 显示全部楼层
shqyking 发表于 2015-11-19 20:47. more info on 1point3acres.com
Technically, 应该是属于pass by value。因为你reference variable本身存储的就是一个地址,而你传一个obje ...
. From 1point 3acres bbs
这种公司就别去了……
回复 支持 反对

使用道具 举报

头像被屏蔽
shqyking 发表于 2015-11-20 10:47:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

ssross 发表于 2015-11-20 10:49:41 | 显示全部楼层
pass the reference by value.所以本质是pass by value。我来说下我的理解吧希望楼主能明白。

什么叫pass by value呢?就是说传递参数的时候是做了make了一个参数的copy。所以说在传递进函数里面后改的东西都是那个copy的值。
. more info on 1point3acres.com
再java中,所有primitive的data type都是存的是这个variable的值。所以当你传一个primitive进函数后即使改变了那个变量的值,也只是改变了那个传进去make copy的值而不是原始的变量。所以当你函数执行完后原来的variable还是不变的。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

而所有其他非primitive的data type,就是object,存的都是reference,也就是所谓的地址。这个variable是指向create的object的。所以当你把一个object的reference传进一个函数里的时候,也是做了一个copy。但如果你在函数里面改变了这个传进去的值,这个object在函数结束后也是被改变的。为什么呢?因为那个copy也是指向同一个object的。虽然他是一个copy,但这个copy和原来的reference都指向一个object。所以会被改变。

举个例子,那个reference其实就是一个信封,这个信封上面写着一个house的地址,这个house就是一个object。所以你传进函数后,做了个这个信封的copy,但这个copy 的信封写的地址也是那个house的地址。所以你在function里做的任何变化都会实实在在的改变那个house的值。


不知道这样楼主能不能理解。
回复 支持 反对

使用道具 举报

 楼主| lqlee 发表于 2015-11-20 13:44:51 | 显示全部楼层
ssross 发表于 2015-11-20 10:49
pass the reference by value.所以本质是pass by value。我来说下我的理解吧希望楼主能明白。

什么叫pas ...

好像pass by value是为了安全吧?原来的值不会被轻易改写。
如果仅仅是对primitive的安全,不知道意义大不大?

java 5以后的autoboxing,不少看上去是primitive,实际已经不是了。
这不还是比较危险吗?
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 18:07

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表