我对此代码有疑问。
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语句检查,因为第一个不是布尔值?谢谢!
我非常感谢明确而简单的帮助。谢谢=)
答案 0 :(得分:1)
Node first, last
行声明了Node类型的两个变量。其中一个名为第一个,第二个名为 last 。这些节点对象是引用对象,因为它们包含内存中数据的地址,而不是包含数据本身。
有关参考与价值类型的更多信息:http://cplus.about.com/od/learnc/ss/value.htm
行last = new Node(item);
实际上正在调用Node的构造函数。创建一个新节点,它包含传入的项目。
if(!first)
检查第一个节点是否为空。如果它为空,则执行该代码块。否则执行第二个块。