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