所以我的朋友创建了一个队列类,该类具有实例变量size = 0;
以及他使用的add方法。
但是在这种情况下索引0会发生什么?
由于add是从size ++开始的,因此不会声明任何元素。这是1个开始位置。
public void add(T data) {
if(size > elements.length) {
throw new QueueException("Queue is full");
}
elements[size++] = data;
}
答案 0 :(得分:5)
size++
返回size
值,然后在后台递增。因此,将分配elements[0]
。有关递增,请参见Oracle Tutorial。
问题出在最后一个元素上。该代码将尝试分配大于阵列容量的elements[elements.length]
。警卫应为:
if (size >= elements.length) {
throw new QueueException("Queue is full");
}