gpt4 book ai didi

Java 引用不能用作指针?

转载 作者:行者123 更新时间:2023-11-30 06:29:05 25 4
gpt4 key购买 nike

这是我的算法中的一段代码:

public void insert(int element) {
_insert(element, root);
System.out.println(root);
}

private void _insert (int element, Node t) {
if (t == null) {
t = new Node(null, element);;
return;
}
}

Node 这里是一个预定义的类。

当调用公共(public)方法insert 时,将调用私有(private)方法并检查树是否为空。如果是这样,将在 root 位置创建一个新节点。

输出应该是一个节点。然而,实际输出是 null,这意味着根没有更新,尽管它作为 t 传递到私有(private)方法中。

这应该在 C++ 下使用指针工作。也许我误解了 Java 中的某些内容?

最佳答案

Java 总是对方法调用使用按值传递。当您将引用类型传递给方法时,会创建一个引用的副本

以下行将 t 更改为引用新对象,但不会更改原始变量 root:

t = new Node(null, element);

您可以更改方法以返回插入的节点,如下所示:

private Node _insert (int element, Node t) {
if (t == null) {
t = new Node(null, element);
}
return t;
}

然后这样调用:

root = _insert(element, root);

关于Java 引用不能用作指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918888/

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