来自 PriorityQueue 的代码:
private E removeAt(int i) {
assert i >= 0 && i < size;
modCount++;
int s = --size; // <- Why???
if (s == i) // removed last element
queue[i] = null;
else {
E moved = (E) queue[s];
queue[s] = null;
siftDown(i, moved);
if (queue[i] == moved) {
siftUp(i, moved);
if (queue[i] != moved)
return moved;
}
}
return null;
}
s = --size
和 s = size
之间有什么区别?有人可以帮忙吗?提前致谢。
最佳答案
int s = --size;
是 pre-decrement operator ,这不等于 int s = size;
。相当于
int s = (size = (size - 1));
或
size = size - 1;
int s = size;
但它比这两者都短。
关于java - 为什么使用 "s = --size"而不是 "s = size"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35715545/