其他
Java和Android程序员都应该掌握的虚拟机知识
https://me.csdn.net/qq_39867049
假设该方法是写在Sum.java文件里,虚拟机对它进行编译时会去确定好栈帧中局 部变量表和操作数栈的容量,然后在创建局部变量表和操作数栈的时候根据这个 容量来创建便可。 然后执行int x = 1的时候其实就是先将常量1压入操作数栈栈顶,然后再把它弹出栈并且放入到局部变量表索引为1的位置里,作为变量x的值。 接着int y = 2时也一样,将常量2压入操作数栈顶,然后再弹出来并且放入到局部变量表索引为2的位置里,作为y变量的值。 接着执行int z = x + y时,先将此时局部变量表里的值1和值2压入到操作数栈中,此时栈顶是2,底下是1,然后进行加法操作得到值3,然后此时栈顶就是该结果值3,将该值3出栈,存入到局部变量表索引为3的位置。 最后执行return z的时候,将局部变量表中的3压入回操作数栈栈顶,然后将操作数栈栈中的3返回给上层方法。到这里整个sum方法执行完毕,而布局变量表和操作数栈也会跟着销毁。