public class IntList {
    private IntNode _head;
    public IntList() {
        _head = null;
    }
 }


我创建了一个名为IntList的类。 IntList包含一种用于搜索具有指定int值的IntNode对象的方法。这是方法:

public boolean findElementInList(int value) {
    IntNode currentNode = this._head;

    while (currentNode.getValue() != value &&
           currentNode.getNext () != null) {
        currentNode = currentNode.getNext();
    }

    return (currentNode.getValue() == value);
}


方法完成后,原始的_head实例变量是完整的-但是为什么呢? currentNode指向方法(别名)中的_head,并且对currentNode所做的每个更改也应反映在_head中(每次运行currentNode = currentNode.getNext();时)。

这是getNext()的代码:

public IntNode getNext( ) {return _next;}

最佳答案

您首先将head的值分配给currentNode。可以将其想象为2个不同的指针指向内存中的相同值。但是然后您继续将列表中的下一个值分配给currentNode,而_head保持不变。顺便说一句,如果您更改头值,则将失去列表的头。

关于java - 将一个变量分配给另一个变量后,为什么更改一个变量不会更改另一个变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35117316/

10-10 13:52