Java 中变量赋值的"按引用传递"/"按值传递"的规则是什么?



因此,有充分的文献记录了方法如何与参数传递一起使用,以通过参考/按值传递,但是可变分配呢?

例如,我只是编写了一些看起来像:

的代码
TreeNode<T> parent = null;
TreeNode<T> current = m_root;
while(current != null) {
    parent = current;
    current = current.getRight();
}

现在,我怎么知道parentwhile循环中最后一次分配后不等于current.getRight()?什么是规则?

java中的规则是什么规则,"通过参考"/"按值逐值"的变量分配?

与将事物传递到方法中相同:已复制,没有提及变量。

现在,我如何知道parentwhile环路中最后一个分配后不等于current.getRight()?什么是规则?

您不这样做,它们都可能是null。但是,如果其中一个不是 null,那么您知道它们并不相等,因为循环在currentnull之前继续进行,因此,如果parent不是null,则它们不能相等。<<<<<<<<<<<</p>

但在这里当心。parentcurrent可以保持的值是对象引用。(该句子中的"参考"具有 nothing 与"通过逐次参考"中的"参考"进行操作。只是使用"参考"一词对于不同上下文中的许多不同事物。)因此,这两个变量都可以通过在两个变量中具有相同的值(相同对象引用)来指代相同的对象。

对于变量,这与方法参数完全相同。让我们使用一个更简单的示例:

Foo a = new Foo();
Foo b = a;

我们在内存中有一个Foo对象,ab变量都包含相同的值,这是对该对象的引用。但是,两个变量之间有连接。因此,例如,如果我们添加此信息:

b = new Foo();

...现在我们有两个Foo在内存中,a是指(指向)其中一个对象,而b指的是另一个。这样做对a中的值根本没有影响。(正是abint s。)

这是一个示例,可能有助于表明通过值/参考工作方式通过:

http://blog.aaronshaw.net/2014/02/13/java-is-is-always-pass-by-value/

我会发表评论,但他们很难注意到。

最新更新