вот код из пункта 6, стр. 24, глава 2 эффективного java 2nd edition, Джошуа Блоха. В методе поп, который он определяет, он использует elements[--size]
. Мне интересно, почему он использовал --size
, вместо этого elements[size--]
должен возвращать то же самое верно?Почему Джошуа Блох уменьшил значение «размера» стека в методе pop в эффективном java?
public class Stack {
private Object[] elements;
private int size = 0;
private static final int DEFAULT_INITIAL_CAPACITY = 16;
public Stack() {
elements = new Object[DEFAULT_INITIAL_CAPACITY];
}
public void push(Object e) {
ensureCapacity();
elements[size++] = e;
}
public Object pop() {
if (size == 0)
throw new EmptyStackException();
return elements[--size];
}
/**
* Ensure space for at least one more element, roughly
* doubling the capacity each time the array needs to grow.
*/
private void ensureCapacity() {
if (elements.length == size)
elements = Arrays.copyOf(elements, 2 * size + 1);
} }
В массивах используются индексы на основе 0. –
выглядит так, будто есть утечка памяти - по нажатому элементу по-прежнему ссылается стек. – ZhongYu
@ zhong.j.yu: да, утечка памяти может быть исправлена путем ссылки на 'elements [size] == null' –