首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java的Varargs

Java的Varargs
EN

Stack Overflow用户
提问于 2018-01-23 16:41:08
回答 1查看 59关注 0票数 1

因此,我创建了一个ListNode.java类,并尝试使用varargs。我定义了构造函数ListNode(int...值),这样它就会生成一个链表,并根据传入的内容定义下一个引用。例如,

ListNode head = new ListNode(1, 2, 3); // is equivalent to 1 -> 2 -> 3 -> null

我正在测试当我不传入任何东西时会发生什么,例如new ListNode(),这样的调用将导致

ListNode emptyHead = new ListNode(); // is equivalent to 0 -> null

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

代码语言:javascript
运行
复制
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;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-23 16:44:28

好吧,如果你什么都不传给构造器,它会收到一个空数组。

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

因此,默认情况下,this.val仍然是0,而this.next仍然是null

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48397375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档