从头认识java-9.8 栈(Stack)

这一章节我们来讨论一下栈(Stack)。

1.特性

先进后出,当一个元素压进栈里面,他就会处于栈的底部,然后,另一个再压进来,盖在原来的元素上面,原来的元素想出去,只有等上面的元素先顶出栈才有机会。

2.方法演示

package com.ray.ch09;

import java.util.Arrays;
import java.util.Stack;

public class Test {
	public static void main(String[] args) {
		Stack<Integer> stack = new Stack<Integer>();
		for (int i = 0; i < 10; i++) {
			stack.add(i);// 其实这里使用add方法不大切当
		}
		stack.push(12);//更好的是使用push,压栈
		System.out.println(Arrays.toString(stack.toArray()));
		System.out.println(stack.pop());
		System.out.println(stack.peek());
		System.out.println(Arrays.toString(stack.toArray()));
	}
}

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
12
9
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

注意:Stack是继承Vector,因此他具备Vector所有的方法,但是对于栈来说,add、remove等方法充满了迷惑性,最好还是使用push、pop、peek这些方法来操作。

总结:这一章节主要讲述栈的特性与注意点。

这一章节就到这里,谢谢。

-----------------------------------

目录

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-23 11:40:58

从头认识java-9.8 栈(Stack)的相关文章

Java再学习——栈(stack)和堆(heap)

一.内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间需求. 栈式存储分配也可称为动态存储分配,是由一个类似于堆栈的运行栈来实现的.和静态存储分配相反,在栈式存储方案中,程序对数据区的

Java集合类之栈Stack

package com.test; import java.util.*; public class Demo7_3 { public static void main(String[] args) { // TODO Auto-generated method stub Emp emp = new Emp("sa001", "xiaoming", 12.3f); Stack stack = new Stack(); stack.add(emp); for (int

关于Java堆、栈和常量池的详解

在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象. 最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制). 2. 堆栈(stack). 位于通用RAM中,但通过它的"堆栈指针"可以从处理器哪里获得支持.堆栈指针若向下移动,则分配新的内存:若向上移动,则释放那些

Java里的堆(heap)栈(stack)和方法区(method)

基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收.   引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 . 方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收.局部变量 new 出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等待GC回收. 方法调用时传入的 literal 参数,先在栈空间分配,在方法调用完成后从栈空间分配.

a堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)

--reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有什么异同,以及和数据结构中的堆栈有何关系? 一.Java 堆存储空间 堆内存(堆存储空间)会在Java运行时分配给对象(Object)或者JRE的类.只要我们创建了一个对象,那么在堆中肯定会分配一块存储空间给这个对象.而我们熟知的Java垃圾回收就是在堆存储空间上进行的,用以释放那些没有任何引用指向

Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)

--reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有什么异同,以及和数据结构中的堆栈有何关系? 一.Java 堆存储空间 堆内存(堆存储空间)会在Java运行时分配给对象(Object)或者JRE的类.只要我们创建了一个对象,那么在堆中肯定会分配一块存储空间给这个对象.而我们熟知的Java垃圾回收就是在堆存储空间上进行的,用以释放那些没有任何引用指向

Java 栈(stack)与堆(heap) 详解

Java 栈(stack)与堆(heap)1.概念    栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.栈,堆的数据结构    栈就像装数据的桶或箱子      它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取.      这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体).    堆像一棵倒过来的树      而堆

java栈stack和堆heap的工作原理,用途及区别?举例说明

java堆和栈的区别[新手可忽略不影响继续学习] (视频下载) (全部书籍) Java中内存分成两种:一种是栈stack,一种是堆heap. 函数中的一些基本类型的变量(int, float)和对象的引用变量(reference)都在函数的栈中,如int a = 5,有个地方先存5,之后再让a指向那个地方.w=new Window(),是w指向Window的首地址.马克-to-win,存取速度快,稍逊于寄存器, 比堆快, 函数执行完后,Java会自动释放掉为函数里变量开辟的栈内存空间,该内存空间

(基础篇)浅析JAVA中的栈和堆

若为生活所迫,做了自己不喜欢做的事.却没有达到自己预期想要的结果,那么何必强迫自己,苦恼这一世.不如转而做自己喜欢的事,哪怕像我一样从头开始. 一.概念 [老生常谈]对于刚接触计算机,没几年的我来说,好多老生常谈的概念对我而言都很新鲜.下面的概念也不例外.他们说对学计算机的而言,堆栈是一个不容忽视的概念. 1.堆栈是两种数据结构,只能在一端对数据项进行插入和删除. 2.在单片机应用中,堆栈是个特殊的存储区,主要是暂时存放数据和地址. 3.堆,队列优先,先进先出 4.栈,先进后出 [java中堆栈

Java堆、栈和常量池以及相关String的详细讲解(转)

一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象. ------最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 堆栈(stack).位于通用RAM中,但通过它的"堆栈指针"可以从处理器哪里获得支持.堆栈指针若向下移动,则分配新的内存:若向上移动