下面的语句定义了链表的节点类:class Node {  private Object item;  private Node nextNode;  private void init(Object data,Node next){    item = data;    nextNode = next;  }  public Node(Object data) {    init(data, null);  }  public Node(Object data, Node next) {    init(data, next);  }}不太明白这样的语句为什么能把一个又一个的节点连起来,不是说java没有指针吗?可是private Node nextNode;为什么能指向下一个节点呢?即使private Node nextNode保存的是下一个节点的地址,可以当它是一个数据啊,为什么会连成一个链表呢?

解决方案 »

  1.   

    我是说private Node nextNode保存的数据不应该会像指针一样有指向的意义啊,应该是经过人工定义了指向的动作以后才有指向的意义吧?郁闷,不理解
      

  2.   

    楼主应该是还没有面向对象的概念,Java中确实没有指针,但是有一个类似于指针的东西叫引用,只是引用指向的是对象的内存地址,而不能修改对象的地址这段程序并没有给出一个链表的实现,或者说这段代码给出的只是一个链表的操作,nextNode是该类的一个引用,而通过下面这段程序  private void init(Object data,Node next){    item = data;    nextNode = next;  }中的next也是一个Node的引用,作为参数传进来,nextNode = next则让nextNode指向了next所指向的对象,完成的工作就像楼上说的一个节点地址连接这一个节点地址
      

  3.   

    java不能直接使用指针, 但是对象本身就是一个指针. 一个节点是一个对象, 只要有父对象和子对象. 即可连层一串链