java - Java 中的可变参数

标签 java constructor linked-list variadic-functions

所以我创建了一个 ListNode.java 类并使用可变参数。我定义了构造函数 ListNode(int...values),以便它将创建一个链接列表,并根据您传入的内容定义其下一个引用。例如,

ListNode head = new ListNode(1, 2, 3);//相当于 1 -> 2 -> 3 -> null

我正在测试当我不传递任何内容时会发生什么,即 new ListNode() 并且这样的调用将导致

ListNode emptyHead = new ListNode();//相当于 0 -> null

你能解释一下为什么吗?下面是我的 ListNode.java 实现。

public class ListNode {
    public int val;
    public ListNode next;

    public ListNode(int val) {
        this.val = val;
        this.next = null;
    }

    public ListNode(int... values) {
        if (values.length == 0) return;

        this.val = values[0];
        this.next = null;
        ListNode ptr = this;
        for (int i = 1; i < values.length; i++) {
            ptr.next = new ListNode(values[i]);
            ptr = ptr.next;
        }
    }
}

最佳答案

好吧,如果您没有向构造函数传递任何内容,它会收到一个空数组。

您的 if (values.length == 0) return; 语句导致构造函数执行结束。

因此,this.val 默认保留 0this.next 保留 null

关于java - Java 中的可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48397375/

相关文章:

php - PHP 中的构造函数

java - 默认情况下,Java 构造函数不是公开的吗?

c - 我的程序替换链表中所有节点中的所有字符串数据类型

c - free() 处的段错误

java - 直方图比较

java - 评估后缀表达式,例如

java - 如果我使用 tbmp 骨架但 tbmp 骨架不是主要 Activity ,我应该怎么做才能正确接收回合制比赛更新?

java - 循环屏障异常处理

.net - Ninject 和私有(private)构造函数

c - 为什么链表的变量必须是指针