gpt4 book ai didi

java - 如何将已经实例化的变量设置为 null?

转载 作者:行者123 更新时间:2023-12-02 06:19:54 24 4
gpt4 key购买 nike

大家好,我正在使用 Java 进行一些测试。

参见方法deleteMiddleNode(),该方法应该给定一个节点,在链表中删除它。除了我想删除最后一个节点的情况外,这一切都工作正常。我所做的是将最后一个节点设置为 null(如果这是要删除的节点)(请参阅注释)。它并没有真正起作用,s5仍然有它的值(value)。

当我只想重置s5的属性key时,它确实有效。

我想知道为什么它会这样。

public class Three {
static SinglyNode s5 = new SinglyNode(5);

public static void main(String[] args) {
SinglyNode s1 = new SinglyNode(1);
SinglyNode s2 = new SinglyNode(2);
SinglyNode s3 = new SinglyNode(3);
SinglyNode s4 = new SinglyNode(4);

s1.next = s2;
s2.next = s3;
s3.next = s4;
s4.next = s5;
deleteMiddleNode(s5);

SinglyNode ptr = s1;
while (ptr!= null) {
System.out.print(ptr.key+" ");
ptr = ptr.next;
}
}

// this method is wrong
public static boolean deleteMiddleNode(SinglyNode node){
if (node == null) {
return false;
}
if (node.next == null) { // last node

/* this part does work
System.out.println(node.key);
node.key = 222;
System.out.println(s5.key);
*/

node = null; // but this doesn't set the last node to null.

return true;
}
node.key = node.next.key;
node.next = node.next.next;
return true;
}

}
<小时/>
class SinglyNode {

int key = 0;
SinglyNode next = null;

public SinglyNode (int key){
this.key = key;
}

}

最佳答案

Java按值传递

这意味着变量保存引用值(就像 C 中的指针一样),当您将它们传递给方法时,该值将被复制到方法内的局部变量。更改该局部变量包含的内容(例如将其设置为 null)不会影响该方法之外的任何内容。

在您的示例中,您的方法签名是:

deleteMiddleNode(SinglyNode node)

当您从 main 调用 deleteMiddleNode(s5) 时,s5 中包含的引用值将被复制到您方法中的 node 中。

关于java - 如何将已经实例化的变量设置为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com