网上看到一个Java实现的简单的栈,请问pop方法是怎么弹出栈中的对象的?

import java.util.Arrays;
import java.util.EmptyStackException;

public class MyStack {
private T[] elements;
private int size = 0;

private static final int INIT_CAPACITY = 16;

public MyStack() {
    elements = (T[]) new Object[INIT_CAPACITY];
}

public void push(T elem) {
    ensureCapacity();
    elements[size++] = elem;
}

public T pop() {
    if(size == 0) 
        throw new EmptyStackException();
    return elements[--size];
}

private void ensureCapacity() {
    if(elements.length == size) {
        elements = Arrays.copyOf(elements, 2 * size + 1);
    }
}

}

难道说弹出的意思不是吧栈中的对象删除?

这个没有删除操作 只是说取下一个值 取完就size-1 再次pop的时候 就是在上次取得基础上再取下一个

删除了啊,因为--size了么。虽然没有真正“清除”这块,但是这个索引上的数据已经不被承认存在了。再push的时候就会冲掉了。
这种做法在计算机中到处可见。比如内存回收,并不需要真的清零,只要把这块内存标记为可用就算回收了。再比如删除文件,并不真的把磁盘恢复到存文件之前的状态,而也是做标记。(所以才可以恢复被删除的文件)

“难道说弹出的意思不是吧栈中的对象删除?”

当头向下移动一个,虽然说没直接删除,,但是不管它了也就相当于删除了。
图片说明

有问题还可以追问,,,