微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 按引用引用的对象 – 按值引用

在这里阅读这个评论Passing a String by Reference in Java?

Yes,it’s a misconception. It’s a huge,widespread misconception. It
leads to an interview question I hate: (“how does Java pass
arguments”). I hate it because roughly half of the interviewers
actually seem to want the wrong answer (“primitives by value,objects
by reference”). The right answer takes longer to give,and seems to
confuse some of them. And they won’t be convinced: I swear I flunked a
tech screen because the CSMajor-type screener had heard the
misconception in college and believed it as gospel. Feh. – CPerkins
Aug 13 ’09 at 14:34

有人可以解释一下,一个新的程序员可以把握,说什么有区别呢?

“在Java中,基元由值传递,对象通过引用传递.

和:

“在Java中没有什么是通过引用传递的,引用是通过值传递的”.

这些陈述在某种意义上都是真实的吗?我不想邀请游行,但这听起来像是一个非常重要的概念,而我还是不完全明白.

解决方法

我认为这个误解在于一个变量不能包含一个开始的对象.如果你把握,那么显然变量只能包含对对象(或原始值)的引用.从那里到实现引用是通过价值传递的一步(就像原始值)相当小.

你可以做一个非常简单的测试来确定语言是否支持通过引用.问问自己是否可以用这种语言编写一个交换函数,即可以这样做的东西

x == A,y == B

swap(x,y);

x == B,y == A

作为Java程序员,您很快就意识到,您无法在Java中实现,因此您(正确地)得出Java不通过引用传递的结论.

回到你的句子:

>在Java中,对象通过引用传递.

这是假的我会认为你只能传递一个包含在变量中的东西,正如我上面所说的那样,一个变量不能包含一个对象,所以你不能在Java中传递一个对象.

>在Java中没有任何东西通过引用传递,引用是通过值传递的.

这是真的.

原文地址:https://www.jb51.cc/java/125888.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐