对Java实现单链表中.next的解释

Q:

问题引入:

  • 我们在用Java实现单链表时, 也许有人会疑惑Java又没有指针,是如何存储链式关系的呢?
  • 又或是有这种疑惑, Java实现中的这种node.next写法是如何遍历链表的

A:

  • 首先,Java中虽然没有指针但是有引用啊. Java的眼里,万物皆对象,对象之间靠引用关系联系在一起.
  • 在单链表的实现中, 我们经常会写一个Node类作为内部类供LinkedList(链表类)使用, 其中有一个Node类的变量 next 用于存储下一个结点的位置(即 next 持有着到下一个结点的引用). 所以我们可以通过temp = temp.next; 来移动到下一个结点.
  • 也许会有人纳闷 next不是 Node类型的对象吗?temp也是Node类的对象,怎么可以对象.对象(temp.next)呢? -------emmm,在Node类中, next是作为其私有属性用来保存结点的下一个位置的!只不过next正好是Node类型的变量罢了.

到了这里可能还有人会有这种疑惑:

多个不同的结点对象Node调用结点类型的变量 next为什么会得到不同的下一个结点的地址?

emmmmm, Java基础还是不够扎实, 同一类的不同对象调用了同一个属性,这个属性值各有不同不是很正常嘛, 点这里让大家来一起说服你
如下图,在单链表的插入方法中, 我们依赖红框内的temp.next = node为每个不同的node结点的next属性赋值,
赋的是什么值呢? 当然是当前结点(temp引用的真实结点)的下一个结点的内存地址
在这里插入图片描述
在执行完插入方法后,我们可以看出 =每个节点的next域都写入了下一个结点的内存地址
在这里插入图片描述

posted @ 2022-05-26 20:31  青松城  阅读(287)  评论(0编辑  收藏  举报