在Java中创建类类型的变量

Mer*_*337 -1 java

代码中有Node nextNode.js 类。我无法理解它到底在做什么。是否创建一个名为 next 的对象。nodeA.next = nodeB使用时是否有存储价值。我正在尝试学习 LinkedList 但我无法了解到底发生了什么。

  class Node{
     int data ;
     Node next;
     Node(int data){
        this.data = data ;
     }
  }

  Node nodeA = new Node(6);
  Node nodeB = new Node(3);
  Node nodeC = new Node(2);


 nodeA.next = nodeB;
 nodeB.next = nodeC;
Run Code Online (Sandbox Code Playgroud)

小智 6

让我们拆分代码并解释各个部分:

class Node {
}
Run Code Online (Sandbox Code Playgroud)

这是创建新类的语法。该类被命名为“Node”。

int data;
Run Code Online (Sandbox Code Playgroud)

这定义了一个实例变量。Node 类型的每个实例都应该有一个名为 int 类型数据的变量。

Node next;
Run Code Online (Sandbox Code Playgroud)

这定义了另一个实例变量。它被称为 next 并保存对 Node 的引用。

 Node(int data){
    this.data = data ;
 }
Run Code Online (Sandbox Code Playgroud)

这就是所谓的构造函数。它接受一个参数 data,然后将其存储在实例变量 data 中。(实例变量用“this.”引用,因为参数数据隐藏了同名实例变量。)

这就是课程本身。现在我们看看它的用法(这在类/函数之外没有意义。此类代码应该是函数的一部分,例如在主函数内):

Node nodeA = new Node(6);
Node nodeB = new Node(3);
Node nodeC = new Node(2);
Run Code Online (Sandbox Code Playgroud)

这将创建类节点的 3 个实例,并将其存储在 nodeA、nodeB 和 nodeC 变量中。

nodeA.next = nodeB;
nodeB.next = nodeC;
Run Code Online (Sandbox Code Playgroud)

这里,我们设置nodeA和nodeB的next实例变量并分配nodeB和nodeC。

这给了我们一个所谓的链表。列表中的一个元素可以指向另一个元素(或者当其中没有元素引用时,则默认为 null。

这有助于理解代码吗?如果不是:您在理解代码时到底在哪里遇到问题?