我要从学习C / C++学习Java:这到底是什么?

I'm going from learning C/C++ to learning Java: What the heck is this?

本文关键字:学习 是什么 Java C++ 我要      更新时间:2023-10-16

我刚刚在Java中看到了一个链表的实现(http://www.danielacton.com/Data-Structures/Linked-List/Java/),下面是节点的样子:

      private class ListNode {
         private Object data;
         private ListNode next;
      }

那到底是什么????

如果考虑一下这里的逻辑,ListNode的大小必须是无穷大字节。ListNode不应该持有另一个ListNode的地址吗?

这是从C++到Java的困惑之一。在Java中,

private ListNode next;

声明了一个引用变量,与C++中的ListNode&引用相比最为接近。这是在Java中创建链表的一种方法——让节点存储数据和对下一项的引用。

请注意,在Java中,next的默认值(如果未初始化(将是null

要想让它像你想象的那样爆炸,它必须是:

private ListNode next = new ListNode();

这将最终导致CCD_ 4。

变量ListNode next;的默认值为null,这意味着在为变量赋值之前,它实际上不会指向ListNode对象。所以不,不存在无限循环。

当您:

X whatever;

其中X是类,whatever引用,而不是完整对象。这与C和C++不同,在C和C++中,堆栈上可以有完整的struct

虽然这在技术上并不准确,但可以将它们视为C/C++指针。除了你用点来表示"间接"。