【发布时间】:2014-08-02 06:07:55
【问题描述】:
我最近读了这篇文章:Is Java "pass-by-reference" or "pass-by-value"?
第一个答案过于简洁和具体,无法让我有一个牢固的理解,其他人都写了 15 页的文章来解释什么应该是一个简单的主题。以下规则是否正确(如果正确,则非常简单):
1.) 与非基本类型相关的命名事物(Java 中的“对象引用”)是 C++ 中的指针。
2.) 。在 Java 指针上使用 -> 与在 C++ 指针上使用 -> 相同。
3.) 在 Java 指针上使用 = 与在 C++ 指针上使用 = 相同。
4.) 所有函数都按值传递(因此按值传递 Java 指针)。
(这忽略了内存管理的差异,例如 Java 指针上的 = 很好,而 C++ 指针上的 = 意味着您可能需要担心内存管理)
这个谜题最令人困惑的一点是,我所见过的任何人都没有用清晰的英语传达这套规则/对 Java 正在做什么的理解(选择了 15 页和图表)。第二个最令人困惑的元素是 Java 以不同于 C++ 的方式使用“引用”一词。如果你想在 C++ 方面对 Java 所做的事情进行类比,那么指针和我创建的规则是理解 Java 行为的最简单的术语。
【问题讨论】:
-
你所有的观察都是正确的。 Java 没有“C++ 引用”之类的东西。这就是为什么你不能在 Java 中编写交换函数的原因。