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;}
答案 0 :(得分:1)
您可以在头开始将头部的值分配给currentNode。可以把它想象成2个不同的指针指向内存中的相同值。但是,您继续将列表中的下一个值分配给currentNode,而_head保持不变。顺便说一句,如果你改变你的头部价值,你将失去你的名单。
答案 1 :(得分:0)
您永远不会更改原始<form>
Barcode: <input type="text" class="barcode" tabindex="1"> | Quantity: <input type="text" class="quantity"><br>
Barcode: <input type="text" class="barcode" tabindex="2"> | Quantity: <input type="text" class="quantity"><br>
Barcode: <input type="text" class="barcode" tabindex="3"> | Quantity: <input type="text" class="quantity"><br>
Barcode: <input type="text" class="barcode" tabindex="4"> | Quantity: <input type="text" class="quantity"><br>
Barcode: <input type="text" class="barcode" tabindex="5"> | Quantity: <input type="text" class="quantity"><br>
Barcode: <input type="text" class="barcode" tabindex="6"> | Quantity: <input type="text" class="quantity">
</form>
。您只需实例化指向_head
的{{1}}。如果你想改变currentNode
,你应该在最后用不同的值改变你的头,而不仅仅是指向它。例如_head
。
答案 2 :(得分:0)
您的head
实例变量保持不变,因为您未在findElementInList
方法中修改其任何内容。
举个例子:
像
这样的东西_head.setValue(10);
或
currentNode = this._head;
currentNode.setValue(10);
将修改您的头节点。在currentNode.setValue(10);
的情况下,由于'别名','this._head'的内容将被修改 - 两个变量都指向同一位置。
重要提示:为currentNode
分配新值根本不会修改this.head
的值。它只是让currentNode
指向一个新节点。所以
currentNode = currentNode.getNext();
让currentNode指向其postscessor而不改变this._head的内容。这就是“指向对象的Java变量只是引用”的含义。
在某些情况下,对变量的赋值将更改变量值:
currentNode.setValue(10);
或
int x = 10; x = x + 1; // x == 11
会改变一些价值。在第一种情况下,您将在第二种情况下使用所谓的“原始值”更改对象内容,该原始值不是对某种对象的引用。