JavaSE学习了有半个月,今天主要讲讲这些天的一些关于栈的理解.其实呢,老师课上讲过栈的原理,但讲的多的是内存图方面,还是比较抽象.下面我通过一些例子来说明: 这是一段比较简单的代码,总共只有3个方法,分别为main方法、add求和方法、max求最大值方法.java中的方法都是按顺序执行,而栈的空间最顶端不是封闭的,首先main方法压栈,再者add方法进栈,最后max方法进栈,内存图如下: 当方法执行结束,就会出现弹栈,也就是从栈的顶部出栈,因此进栈顺序为123,出栈顺序为321,从而就有了先进后出,后进先出的说法. Java中也有栈的类(Stack),简单看下JDK1.9的api手册,里面总共有5个方法,如图: Push方法的功能是进栈,push方法的功能是出栈,下面我们简单实现一下,直接上代码:
可以看出由于java中是按顺序执行方法,因此入栈顺序为123.我们来看看代码运行结果: 输出顺序为321,所以,我们可以得出栈的顺序是后进先出.
|