java中的“堆栈”是什么意思?

Python013

java中的“堆栈”是什么意思?,第1张

堆栈是计算机为程序分配的内存空间,用来存储数据的。

内存是计算机系统中一个主要部件, 用于保存进程运行时的程序和数据,也称可执行存储器。在计算机中,内存空间一般是指主存储器空间(物理地址空间)或系统为一个用户程序分配内存空间。扩展内存空间的方法一般有增加内存大小和虚拟内存。

源程序经过汇编或编译后再经过链接编辑程序加工形成的程序的装配模块,及转换为相对地址编址的模块,它是以0为基址顺序进行编址的。

相对地址也称为逻辑地址或虚拟地址,把程序中由相对地址组成的空间叫做逻辑地址空间。相对地址空间通过地址再定位机构转换到绝对地址空间,绝对地址空间也叫物理地址空间。

内存空间一般是指主存储器空间(物理地址空间)或系统为一个用户程序分配内存空间。系统为一个用户程序分配内存空间方法有单一连续分配、固定分区分配、动态分区分配以及动态重定位分区分配四种方式。

为了便于内存分配,通常将分区按大小进行排队,并为之建立一张分区使用表,其中各表项包括每个分区的起始地址、大小及状态(是否已分配)。

当有一用户程序要装入时,由内存分配程序检索该表,从中找出一个能满足要求的、尚未分配的分区,将之分配给该程序,然后将该表项中的状态置为“已分配” ;若未找到大小足够的分区,则拒绝为该用户程序分配内存。

如下示例代码

//Create the Stack instance and add a couple of elements to it

Stack stack = new Stack()

String s1 = "element 1"

String s2 = "element 2"

stack.push(s1)

stack.push(s2)

现在栈中有两个元素,栈顶应该是element 2,我们可以通过peek方法看栈顶的元素:

System.out.println(stack.peek())

输出:

element 2

要看element 1的位置需要使用search方法:

//Find position of a certain element

int pos = stack.search("element 1")

System.out.println(pos)

上面代码将输出:

2

要移除栈顶的元素应该用pop()方法:

System.out.println(stack.pop())

System.out.println(stack.pop())

输出:

element 2

element 1

在上一步中栈中的两个元素都被pop了,现在我们看下empty()方法是否返回true

System.out.println(stack.empty())

输出:

true

java.util.Stack 在 jdk  java.util 包里面, 也是 java 集合框架的重要组成部分

Stack是一个后进先出(last in first out,LIFO)的堆栈,在Vector类的基础上扩展5个方法而来

E push(E item)            把项压入堆栈顶部。

E pop()            移除堆栈顶部的对象,并作为此函数的值返回该对象。

E peek()            查看堆栈顶部的对象,但不从堆栈中移除它。

boolean empty()            测试堆栈是否为空。  

int search(Object o)            返回对象在堆栈中的位置,以 1 为基数。