1、一种非常经典的数据结构。
 栈数据结构:stack
 2、什么是数据结构?
 数据结构通常是:存储数据的容器。而该容器可能存在不同的结构。
 数据结构和 java 语言实际上是没有关系,数据结构是一门独立的学科。
 在大学计算机专业中,数据结构是必须的一门课程。
 3、常见的数据结构有哪些?
 数组、链表、图、二叉树、栈、队列. . . .
 java 语言把常用的数据结构都已经写好了,可以直接用就行。但如果期望有更高的造诣,
 建议数据结构还是需要精通一下。
 4、和数据结构通常出现在一块的是:算法。
 算法:排序算法、查找算法、…算法
JVM三块主要的内存:栈内存、堆内存、方法区内存。
 方法区最先有数据:方法区中放代码片段。存放 class 字节码。
 栈内存:方法调用的时候,该方法需要的内存空间在栈中分配。
 方法不调用是不会在栈中分配空间的。方法只有在调用的时候才会在栈中分配空间,并且调用时就是压栈。
 方法执行结束之后,该方法所需要的空间就会释放,此时发生弹栈动作。
方法调用叫做:压栈。分配空间
 方法结束叫做:弹栈。释放空间
栈中存储什么?
 方法运行过程中需要的内存,以及栈中会存储方法的局部变量。
为什么要画内存图?
 更深层次的理解代码,在代码没有运行之前就能猜测出结果。
 会内存图,后期调错的时候会有很大的帮助。
5、JVM的内存结构中三块比较重要的内存空间。
 方法区:
 存储代码片段,存储 xxx.class 字节码文件,这个空间是最先有数据的,类加载器首先将代码加载到这里。
 堆内存:对象内存空间,成员中的实例变量
 栈内存:
 stack栈当中存储什么?
 每个方法执行时所需要的内存空间(局部变量)。
 6、关于数据结构中的栈数据结构
 原则:
 后进先出
 先进后出
 栈数据结构相关的术语:
 栈帧:永远指向栈顶部的元素(栈顶元素具有活跃权。)
 栈顶元素
 栈底元素
 压栈,入栈,进栈,push
 弹栈,出栈,pop
什么是数据结构?什么是算法?
 有一本书:数据结构与算法。
 数据结构和算法的选择很重要,选择对了,程序的执行效率大大提升。可以很好的优化程序。
 7、分析程序运行过程中的内存变化
 方法只定义不调用是不会执行的。
 方法调用时:压栈(在栈中给该方法分配空间)
 方法执行结束时:弹栈(将该方法占用的空间释放,局部变量的内存也释放。)