检查对节点对象的引用

时间:2011-10-03 18:39:35

标签: reference nodes

我对此代码有疑问。

class Queue {
    Node first, last
    void enqueue(Object item){
        if(!first){
            last = new Node(item);
            first = last;
        } else {
            last.next = new Node(item);
            last = last.next;
        }
    }
}

我想我不确定Node究竟是什么。当我先写行Node时,最后,我听说我正在引用一个节点对象。这到底是什么意思呢?它指向内存中的任何地方吗?我知道我从不调用构造函数,因此它不是一个新对象。你能给我一些见解吗?

如果(!first)是什么意思呢?什么是if语句检查,因为第一个不是布尔值?谢谢!

我非常感谢明确而简单的帮助。谢谢=)

1 个答案:

答案 0 :(得分:1)

Node first, last行声明了Node类型的两个变量。其中一个名为第一个,第二个名为 last 。这些节点对象是引用对象,因为它们包含内存中数据的地址,而不是包含数据本身。

有关参考与价值类型的更多信息:http://cplus.about.com/od/learnc/ss/value.htm

last = new Node(item);实际上正在调用Node的构造函数。创建一个新节点,它包含传入的项目。

if(!first)检查第一个节点是否为空。如果它为空,则执行该代码块。否则执行第二个块。