java - 为什么我不能将传入的对象分配给方法中的新值?

标签 java methods

Java 代码:

private BiNode root = null;

//constructor
BST(int[] r) {
    BiNode s = new BiNode(r[0], null, null);
    test(root, s);
}

private  void test(BiNode head, BiNode s){
    head = s;

    if (head != null)
        System.out.println("head is not null");
    if (root == null)
        System.out.println("root is null");
}

输出:

head is not null
root is null

为什么root不等于headtest方法?

最佳答案

当您将构造函数中的 root 传递给方法 test 时,该方法实际上使用一个指向对象值的新指针,该指针为 null(root 的值)。因此,在该方法中,当您将 head 的值更改为 s 时,您不会对 root 的指针进行任何更改,该指针仍为 null,但 head 的值会发生变化。

这是一个java障碍,即你不能传递指针,并且你在java中所做的任何事情都无法解决这个问题,所以你必须直接设置root

关于java - 为什么我不能将传入的对象分配给方法中的新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36821610/

相关文章:

java - 无法使用 JSP 隐藏 URL 中的文件名

java - 如何创建自己的自定义谓词来比较 hazelcast 中的复合 id

java - 通过对某些方法进行小的更改来扩展软件包

c - 使用另一个 char 数组从 struct 设置一个 char 数组

java - 程序将一个字符添加到字符串,然后通过 toString() 方法显示结果,并通过 length() 计算字符串的数量

java - JAXB - 更改结构子节点

java - 如何停止在 Java 中的阻塞读取操作中等待的线程?

java - Java中的类和方法数组

JavaScript 函数获取对象

javascript - 如何跟踪 JavaScript 方法中的先前值?